【发布时间】:2020-10-18 20:55:39
【问题描述】:
我有一个非常基本的布局文件:
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
@{Html.RenderPartial("/Views/Shared/_Menu.cshtml");}
@{Html.RenderPartial("/Views/Shared/_Header.cshtml");}
@{Html.RenderPartial("/Views/Shared/_Footer.cshtml");}
</body>
</html>
我的问题是菜单、页眉和页脚需要一个模型来加载某种对所有视图都通用的动态数据。
我可以通过将RenderPartial改为RenderAction来解决,例如:
布局:
@{Html.RenderAction("GetFooter", "Layout");}
控制器:
[ChildActionOnly]
public PartialViewResult GetFooter()
{
FooterViewModel footerViewModel = new FooterViewModel
{
// do whatever code is required
};
return PartialView("/Views/Shared/_Footer.cshtml", footerViewModel);
}
但我读到 RenderAction 是一个很大的禁忌,因为它执行整个 MVC 循环,那么我有什么选择?
【问题讨论】:
-
@Html.Partial() ,允许模型参数
-
是的,但我的布局没有模型,据我了解,没有与布局链接的 HttpGet 操作,我可以在其中加载动态数据。
-
您可以使用 ViewData['footerViewModel'] 发送信息来渲染部分
-
我应该在哪里放置代码来填充 ViewData['footerViewModel']?
标签: asp.net asp.net-mvc asp.net-mvc-4