为什么_ViewStart.cshtml无法访问ViewBag对象?

mmc*_*ole 34 razor asp.net-mvc-3

我的/ Views文件夹中有默认的_ViewStart.cshtml.我希望能够访问我的ViewBag对象,以便为所有视图设置默认标题.

但是,有:

@{
    Layout = "~/Views/Shared/SiteLayout.cshtml";
    ViewBag.Title = "bytecourse - Online Courses in Technology";
}
Run Code Online (Sandbox Code Playgroud)

我得到"名称'ViewBag'在当前上下文中不存在"作为运行时错误.

我需要做什么?

Mal*_*aur 45

简而言之......使用控制器的视图包.

ViewContext.Controller.ViewBag.MyVar = "myVal";
Run Code Online (Sandbox Code Playgroud)

@ViewContext.Controller.ViewBag.MyVar
Run Code Online (Sandbox Code Playgroud)

================================================== =============

这里有很好的信息:http://forums.asp.net/post/4254825.aspx

================================================== =============

通常,ViewData ["StoreName"]与ViewBag.StoreName相同

另外,Controller.ViewData ["StoreName"] = Controller.StoreName = ViewContext.Controller.ViewBag.StoreName = ViewContext.Controller.ViewData ["StoreName"]

但是每个视图和局部视图都有自己的viewdata实例.

http://jeffreypalermo.com/blog/viewdata-mechanics-and-segmentation-excerpt-from-asp.net-mvc-in-action/

================================================== =============

这里有另一个解决方案:https://stackoverflow.com/a/4834382/291753

================================================== =============