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