I have a specific ViewBag property that I would like to set at the ViewStart level. Ideally, I would like to be able to override that property on a page basis, if necessary. Is this possible? If so, how do I access the ViewBag property within a ViewStart page?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
There are two way to do this:
Use the
PageData
property (it's something more applicable to ASP.NET WebPages and seldom used in MVC)Set:
@{ PageData["message"] = "Hello"; }
Retrieve
<h2>@PageData["message"]</h2>
Try to find the view instance (the code is a bit dirty, but it does give you access directly to
ViewBag
/ViewData
Set:
@{ var c = this.ChildPage; while (c != null) { var vp = c as WebViewPage; if (vp != null) { vp.ViewBag.Message = "Hello1"; break; } c = c.ChildPage; } }
Retrieve: as per usual
<h2>@ViewBag.Message</h2>