【发布时间】:2010-05-14 15:05:42
【问题描述】:
我开发了一个插件系统,可以轻松地将新逻辑插入应用程序。现在我需要提供轻松添加 UI 小部件的能力。
关于如何使用 ASP.NET MVC 创建门户系统(如 iGoogle)已经有一些很好的回应,我对整体概念很好。
我的问题实际上是关于我们如何制作强类型小部件。
基本上,当我们设置一个小部件时,我们会定义用于呈现该小部件的控制器和操作名称。我们可以对非强类型的小部件使用一个控制器操作(因为我们只返回没有模型的 PartialView(widgetControlName))
对于强类型的小部件(例如 IList),我们需要添加一个新的控制器操作(因为我认为不可能将泛型与 ActionResult 一起使用,例如 ActionResult)。
重要的是小部件开发人员不应更改主应用程序控制器。所以我的两个想法是这样的:
- 在单独的类库中创建新控制器
-
在主 web 项目中创建一个部分 WidgetController,然后在其他项目中扩展它(这甚至可能吗?)- 根据@mfeingold 不可能
就小部件(用户控件)的开发而言,我们可以使用扩展项目中的构建后事件将它们复制到 Views/Widgets 目录中。
这是一个好方法吗?我感兴趣的是其他人是如何处理这种情况的。
谢谢 本
P.S - 如果有帮助,可以举个例子说明我们如何在不使用 Javascript 的情况下渲染小部件
<%foreach (var widget in Model) {%>
<%if (widget.IsStronglyTyped) {
Html.RenderAction(widget.Action, widget.Controller);
} else {
Html.RenderPartial(widget.ControlName);
}
%>
<%} %>
【问题讨论】:
标签: asp.net-mvc