Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I set ViewBag properties on _ViewStart.cshtml?

Tags:

razor

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?

like image 821
Jim Geurts Avatar asked Jan 28 '11 23:01

Jim Geurts


1 Answers

There are two way to do this:

  1. 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>
      
  2. 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>
      
like image 188
marcind Avatar answered Oct 20 '22 10:10

marcind