Rob Conery在他的Kona改寫中做了類似的事情。他能夠在頁面中創建區域,然後將窗口小部件關聯到這些區域。
有浮現在腦海兩種方法:
1)首先是加載所有的部件在控制器的行動和他們持有的內容。然後將小部件(模型中)的所有信息發送到您的視圖,並在那裏進行過濾。這保留了視圖和控制器之間的分離。你可能會想創建一個輔助方法:
在第一種方法
<% Html.RenderWidgets("Main", Model.Widgets) %>
<% Html.RenderWidgets("SideBar", Model.Widgets) %>
一個說明。您可能需要某種命名約定,以便您可以更輕鬆地找到其局部視圖。
2.)另一種方法是使用RenderAction並調用一個可以傳遞區域名稱的「RegionController」。傳遞區域名稱將觸發查詢屬於該特定區域的所有小部件。
<% Html.RenderAction<RegionController>(x=>x.Widgets("Main")) %>
<% Html.RenderAction<RegionController>(x=>x.Widgets("SideBar")) %>
我個人會做第一種方法,但我看不出有問題,不是從純粹主義者的呼喊其他的第二種方法。
當你說靈活的佈局,你的意思是隻看和定位或添加和刪除內容? 在第一種情況下,您可以使用CSS/Js和路徑做些事情,否則您必須變得更聰明,管理員會做多少事?他們可以觸摸HTML的代碼(即你會讓他們訪問您的意見?) – roundcrisis 2010-02-09 18:39:55