如何在ASP.Net MVC 3中创建复合视图?

时间:2011-04-06 15:34:46

标签: asp.net-mvc asp.net-mvc-3

如何在ASP.Net MVC 3中创建一个视图,将视图的一部分创建/渲染推迟到另一个视图/控制器,而不知道设计时间将是什么视图/控制器推迟到?

我有一个使用布局页面的仪表板视图/控制器。仪表板视图完成渲染整个屏幕的大部分工作。但是,整个屏幕的某个占位符部分将根据业务规则,配置,用户交互等而有所不同。可能需要在占位符部分中呈现三个单独的插件视图/控制器。一旦仪表板控制器确定哪个插件应该可见,我如何指示仪表板视图呈现特定的插件视图。我已经通过在Dashboard模型中放置标志然后在Dashboard视图中具有条件逻辑来调用Html.RenderAction并使用基于标志的适当参数来完成此操作。这似乎不能令人满意,我认为这种情况已经有一个简单的内置功能,请指教。

谢谢

2 个答案:

答案 0 :(得分:1)

您真的在问“我如何动态呈现部分视图,这些视图在设计时已知道其身份。”

可以通过Html.RenderPartial或Html.RenderAction实现两种方式。两者都有自己的位置。如果主页面“知道”足以获得视图数据,则RenderPartial是您最好的选择,因为它比RenderAction更有效。如果您只知道门户窗口小部件的唯一标识符,而不是RenderAction,因为您现在拥有一个完全支持的控制器方法,可以执行诸如返回数据库和呈现视图之类的操作。

答案 1 :(得分:0)

您可以编写自己的htmlhelper并在视图中使用它而不是使用标记。