我开发了一个插件系统,可以很容易地将新逻辑插入到应用程序中。现在我需要提供轻松添加UI小部件的功能。ASP.NET MVC强类型构件
对于如何使用ASP.NET MVC创建门户系统(如iGoogle)已经有了一些很好的回应,并且我对整体概念很满意。
我的问题是关于如何制作强类型的小部件。
本质上,当我们设置一个小部件时,我们定义了用于呈现该小部件的控制器和动作名称。对于没有强类型的小部件,我们可以使用一个控制器动作(因为我们只是在没有模型的情况下返回PartialView(widgetControlName))
对于强类型化的小部件(例如对于IList),我们需要添加一个新控制器的行动(因为我相信它是不可能使用ActionResult例如ActionResult泛型)。
重要的是,小部件开发人员不应该更改主应用程序控制器。所以,我的两个想法是这样的:(?这是甚至可能的)
- 在一个单独的类库中创建新的控制器
-
主Web项目创建一个局部WidgetController,然后在其他项目中扩展这个- 不可能按照@ mfeingold
就widget(用户控件)的开发而言,我们可以使用我们的扩展项目中的post build事件将它们复制到Views/Widgets目录中。
这是一个很好的方法。我很感兴趣的是其他人如何处理这种情况。
感谢 本
P.S - 万一有帮助,我们如何可以使部件的例子 - 无需使用Javascript
<%foreach (var widget in Model) {%>
<%if (widget.IsStronglyTyped) {
Html.RenderAction(widget.Action, widget.Controller);
} else {
Html.RenderPartial(widget.ControlName);
}
%>
<%} %>
@Arbis,可移植区域看起来好像会很好地完成这项工作,但很高兴看到我们如何使用IoC容器,以便我们可以失去主要Web项目对可移植区域项目的依赖关系。例如,作为便携式区域开发的博客功能可能需要通过总线执行验证。从我在http://cdn-static.viddler.com/flash/publisher.swf?key=81f1a688上看到的示例中,消息处理程序需要在主Web应用程序中注册。这意味着要“插入”博客功能,我需要深入Visual Studio。 – 2010-05-17 10:13:03
关于在便携式区域使用IoC - 请参阅http://groups.google.com/group/mvccontrib-discuss/browse_thread/thread/db00b09665dcc7ac# – 2010-05-18 11:30:51
上的解决方案您的便携式区域链接不正确。 – StriplingWarrior 2010-10-06 17:17:12