Reputation: 20419
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?
Upvotes: 21
Views: 17172
Reputation: 53183
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>
Upvotes: 12