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

标签 razor

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

最佳答案

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

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

    • 设置:

      @{
          PageData["message"] = "Hello";
      }
      
    • 检索

      <h2>@PageData["message"]</h2>
      
  2. 尝试找到 View 实例(代码有点脏,但它确实可以让您直接访问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>
      

关于razor - 如何在 _ViewStart.cshtml 上设置 ViewBag 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4834045/

相关文章:

angularjs - 使用 Razor 语法和 Angular

jquery - 在 Kendo Datepicker 中使日期不可选择或不可单击

asp.net-mvc - 模板 Razor 委托(delegate) - 交替行

c# - MVC 4 _Layout.cshtml 动态 CSS

asp.net-mvc - 在 MVC Razor 中保留数据而不在请求之间使用 TempData

c# - 我可以为 ViewBag 提供扩展方法吗?

c# - 使用 html 帮助程序在 asp.net mvc 中显示导航属性的正确方法

asp.net-mvc - 要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet

c# - ServiceStack 3.9.71 中缺少类型

c# - ServiceStack.Razor 从 razor View 输出绝对 URL