Thi*_*rry 5 asp.net dependency-injection
我需要构建一个'可自定义的'asp.net Web应用程序(不是asp.net mvc).
我正在考虑使用IoC容器将用户控件注入aspx页面.
有人试过吗?
简而言之,我认为这可以实现:
我使用Scott Guthrie的方法构建一个可重用的"用户控件库"(参见他的文章"创建和使用用户控件库").
该库中的控件和页面应具有动态接收用户控件的位置(例如,在asp PlaceHolder中).
在我的自定义Web应用程序中,构建在该库之上,我创建了特定的用户控件.
我将它们以某种方式放在IoC容器中,以便它们可以注入"用户控件库"的控件/页面中(例如,在PlaceHolders中).
而已.
这基本上可以用Spring.Net来完成,如http://blogger.forgottenskies.com/?p=70所讨论的那样,但是要注入用户控件.
有没有人对这些东西有一些经验?还是听起来很傻?备择方案 ?
我们的想法是可以在我的"用户控件库"之上构建不同的Web应用程序,而无需触及该库.
例如:在我的库中,我有一个包含4个文本框的页面,对于一个特定的应用程序,我需要添加一个文本框,而不更改页面的代码.我们的想法是在该页面中放置一个占位符,并在此占位符中动态注入我的自定义文本框.
我们使用类似的模型构建了一套应用程序。
我们有一个所谓的 PageBuilder,它通过注入 UserControls 和 WebParts 来构造每个页面。
一切都是可配置的(页面布局、页面控件、控件位置等),因此无需更改页面、UserControls 或 WebPart 中的任何代码。(除非需要添加/更改某些功能)。
我们甚至在控件中进行配置和设置,以根据 SQL 查询、模式、当前页面等各种因素来更改行为。
基本上它的工作原理是这样的:
所有 WebPart 都可以通过自定义发布者/订阅者事件模型相互通信。即,在 WebPart A 中,下拉选择已更改 => WebPart B 显示所选项目的数据。
该模型使我们能够构建高度可配置的应用程序,客户可以在其中设计布局和行为,而无需我们参与。
您的模型似乎是我们模型的子集,我只能说它很容易使用。无论是从开发人员的角度还是从客户的角度来看。
编辑:
基本上我们的框架由一些调用 PageBuilder 的母版页和基页组成。
每个母版页都用于不同类型的对象:页面、UserControls、WebPart、Lightbox 等。
每个 aspx 页面都包含一个用于 UserControls 和 WebParts 的 PlaceHolder。此占位符由 PageBuilder 填充。
我们的 aspx 页面中的 UserControl/WebPart PlaceHolder 可以填充我们想要的任何控件。所以根本不需要改变aspx页面。如果我们想要一个文本框,我们可以对其进行配置。对于自定义 UserControl 或 WebPart 也是如此。通过这种方式,我们不需要为每个自定义应用程序重新创建 aspx 页面,而只需要更改配置。
我们有 100 多个用于各种 aspx 页面的 UserControls 和 WebPart,但大多数 aspx 页面看起来类似于:
<%@ Page MasterPageFile="main.master" ... %>
<asp:Content runat="server" ContentPlaceHolderID="Main" ID="MainSection">
<asp:PlaceHolder runat="server ID="UserControlPlaceHolder"></asp:PlaceHolder>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
在代码隐藏中我们有类似的内容:
Partial Class MyPageClass Inherits BasePage
Protected Sub Page_Init(ByVal sender As Object, ByVal e as System.EventArgs) Handles Me.Init
'The following method is in the BasePage and is part of the PageBuilder.
LoadControls()
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
PageBuilder 创建布局,然后加载所有控件和 WebPart 并将其添加到正确的位置。
(布局、控件和控件位置都是从配置中获取的。)
然后 PageBuilder 应用每个控件和 WebPart 的设置。这些设置也是可配置的。设置可以是简单的控件高度,也可以是更复杂的设置,例如“显示模式”(静态、页面相关、组相关等)。
希望这能更详细地解释它。
| 归档时间: |
|
| 查看次数: |
1979 次 |
| 最近记录: |