我开发了一个插件系统,可以轻松地将新逻辑插入应用程序。现在我需要提供轻松添加UI小部件的功能。
对于如何使用ASP.NET MVC创建门户系统(如iGoogle)已经有了一些很好的回应,我对整体概念很满意。
我的问题是关于我们如何制作强类型小部件。
基本上,当我们设置一个小部件时,我们定义了用于呈现该小部件的控制器和动作名称。我们可以对非强类型的小部件使用一个控制器操作(因为我们只返回没有模型的PartialView(widgetControlName))
对于强类型的小部件(例如对于IList),我们需要添加一个新的控制器动作(因为我认为不可能将Generics与ActionResult一起使用,例如ActionResult)。
重要的是,小部件开发人员不应该更改主应用程序控制器。所以我的两个想法是:
就小部件(用户控件)的开发而言,我们可以使用扩展项目中的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);
}
%>
<%} %>
答案 0 :(得分:1)
你的第二个问题的答案是否定的。部分类的所有源代码都应该在同一个项目中。
答案 1 :(得分:1)
对我来说,似乎MvcContrib的portable areas适合完美地开发独立小部件。
以下是一个示例 - OpenId authentication widget。
下周您甚至可以观看c4mvc presentation。
答案 2 :(得分:0)
模板引擎是否可以为您的窗口小部件类型创建模板,然后只需调用<%: Html.EditorForModel(untypedWidgetModel) %>
- 理论上,您的模板将接管并呈现适当的HTML。
或者我误解了模板是如何起作用的?