你们如何在ASP.NET MVC 2中创建动态布局,管理员可以选择要显示的窗口小部件,排列它们,禁用它们,移动它们等等?我的意思是灵活的布局,可以通过管理面板进行更改,而无需触摸代码。在这里,我考虑在db中定义和存储布局小部件路径。稍后我可以将这些小部件与路由相关联(在db中)。对于每个请求(控制器,操作),我将获取相关小部件之间的布局并递归输出它们。可能我可以为此使用RenderAction和PartialViews。
我的方向是正确还是应该专注于其他技术?
谢谢, 的Jakub
答案 0 :(得分:2)
有两种方法可以想到:
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")) %>
我个人会采用第一种方法,但除了纯粹主义者的呼喊之外,我没有看到第二种方法存在问题。
答案 1 :(得分:1)
如果您想要小部件的交互式拖放,请使用jQuery或ExtJS。 ExtJS有一个完整的portal example。
如果您不想使用javascript,则需要滚动自定义解决方案,其中定义了区域并使用动态加载的部分视图填充。