在布局页面中使用ViewBag

时间:2014-10-06 21:00:48

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

我的_Layout.cshtml文件使用ViewBag模型呈现一些动态内容。

我理解ViewBag可以填充在控制器中,并可以在视图和/或布局页面中访问。

我的问题是,如果我的布局页面使用@ViewBag.SiteName,我想避免在返回视图之前在每个控制器中设置此变量。有没有办法在全局范围内设置此变量?或者我应该如何将这些数据传递到布局页面?

1 个答案:

答案 0 :(得分:4)

如果你在ViewBag中设置任何内容 - 在>布局完成后发生 - 你错过了这条船。

正如其他人所提到的,你可以创建一个“助手”控制器:

public class LayoutController : BaseController
{
    [ChildActionOnly]
    public ActionResult SiteName()
    {
        return new ContentResult {Content = "Site name goes here"};
    }
}

然后,在你的布局中:

@{Html.Action("SiteName", "Layout")}