开发者

How do I set ViewBag properties on _ViewStart.cshtml?

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?


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>
      
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜