我開發了一個插件系統,可以很容易地將新邏輯插入到應用程序中。現在我需要提供輕鬆添加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