我的_Layout.cshtml
文件使用ViewBag
模型呈现一些动态内容。
我理解ViewBag
可以填充在控制器中,并可以在视图和/或布局页面中访问。
我的问题是,如果我的布局页面使用@ViewBag.SiteName
,我想避免在返回视图之前在每个控制器中设置此变量。有没有办法在全局范围内设置此变量?或者我应该如何将这些数据传递到布局页面?
答案 0 :(得分:4)
如果你在ViewBag中设置任何内容 - 在>>布局完成后发生 - 你错过了这条船。
正如其他人所提到的,你可以创建一个“助手”控制器:
public class LayoutController : BaseController
{
[ChildActionOnly]
public ActionResult SiteName()
{
return new ContentResult {Content = "Site name goes here"};
}
}
然后,在你的布局中:
@{Html.Action("SiteName", "Layout")}