如何在_ViewStart.cshtml上设置ViewBag属性?

时间:2011-01-28 23:33:49

标签: razor

我有一个特定的ViewBag属性,我想在ViewStart级别设置。理想情况下,如果有必要,我希望能够在页面的基础上覆盖该属性。这可能吗?如果是这样,我如何在ViewStart页面中访问ViewBag属性?

1 个答案:

答案 0 :(得分:11)

有两种方法可以做到这一点:

  1. 使用PageData属性(它更适用于ASP.NET WebPages,很少在MVC中使用)

    • 集:

      @{
          PageData["message"] = "Hello";
      }
      
    • 提取

      <h2>@PageData["message"]</h2>
      
  2. 尝试查找视图实例(代码有点脏,但它确实允许您直接访问ViewBag / ViewData

    • 集:

      @{
          var c = this.ChildPage;
          while (c != null) {
              var vp = c as WebViewPage;
              if (vp != null) {
                  vp.ViewBag.Message = "Hello1";
                  break;
              }
              c = c.ChildPage;
          }
      }
      
    • 检索:按照惯例

      <h2>@ViewBag.Message</h2>