2010-10-04 54 views
0

場景:如何在ASP.NET MVC 2.0網站中的模塊中創建可重複使用的「小部件」標記?

平臺:ASP.NET 4.0,MVC 2.0(不必是MVC,如果這不是正確的解決方案)

創建繼承相同的核心標記各種小部件:

<div class="widget"> 
    <div class="hd-widget"> 
     <!-- dynamically inject code here for each actual widget --> 

    </div> 
    <div class="bd-widget"> 
     <!-- dynamically inject code here for each actual widget --> 
    </div> 
    <div class="ft-widget"> 
     <!-- dynamically inject code here for each actual widget --> 
    </div> 
</div> 

上面的「簡化」例子應該在某些可重用的控件或masterpage中。

的流動是這樣的:

控制器 - >查看 - >局部視圖(1..N) - >插件標記

用戶實例它調用的控制器的動作。控制器嘗試渲染包含內容+多個小部件(左欄,右欄等)的視圖。小部件都有自己的部分視圖,但每個部分視圖應該繼承或使用基本的小部件標記集,並在其中嵌入功能的控制器區域。

頭部,主體和頁腳中的功能可以是純文本,HTML或其他自定義控件。

什麼是最好的推薦方法?

+0

你是否在想MasterPages,但對於部分視圖? – Larsenal 2010-10-04 21:44:12

+1

是的,這裏有一些較舊的帖子,但在MVC 2.0/ASP.NET 4.0中,它不允許您使用MasterPage作爲部分HTML佈局。 – nopuck4you 2010-10-04 22:22:28

+0

看起來像我使用MasterPages引用的帖子,但在VS 2010中生成警告消息,說明這是MasterPage的無效標記。無論如何,它的作用就像在各種佔位符區域創建具有可嵌入內容的標準模塊標記一樣。 – nopuck4you 2010-10-13 19:55:18

回答

0

我假設你的小部件將存儲在數據庫中。

我想你需要路徑,PageSettings,Widgets,WidgetInstances,MasterPages,MasterPageZones和Zones的表格。

我認爲每個小部件都需要調用RenderAction,並且這個動作將存儲在數據庫中。小部件頁眉和頁腳大概可以從數據庫中檢索。

當我這樣做時,我花了相當多的時間爲每個窗口小部件創建動態編輯器,每個窗口小部件的狀態都是在json中序列化的,我仍在處理的唯一問題是動態驗證窗口小部件編輯。

頁面佈局由自定義個性化類處理,存儲母版,路徑,用戶id等

它使用JQuery排序,但真正快速和搜索引擎友好頗有參與的解決方案。

1

我會想你會有一個WidgetModel,它包含一組關於這個小部件的屬性。

例如,

public class WidgetModel 
{ 
    public string ControllerName { get; set; } 
    public string HeaderAction { get; set; } 
    public string BodyAction { get; set; } 
    public string FooterAction { get; set; } 
} 

而且你有一個小工具視圖像

<div class="widget"> 
    <div class="hd-widget"> 
     <%: Html.RenderAction(Model.HeaderAction, Model.ControllerName) %> 
    </div> 
    <div class="bd-widget"> 
     <%: Html.RenderAction(Model.BodyAction, Model.ControllerName) %> 
    </div> 
    <div class="ft-widget"> 
     <%: Html.RenderAction(Model.FooterAction, Model.ControllerName) %> 
    </div> 
</div> 

當然,如果你想你可以添加更多的東西。

相關問題