Как установить свойства ViewBag для _ViewStart.cshtml? - PullRequest
21 голосов
/ 29 января 2011

У меня есть определенное свойство ViewBag, которое я хотел бы установить на уровне ViewStart.В идеале я хотел бы иметь возможность переопределять это свойство на основе страниц, если это необходимо.Это возможно?Если да, то как мне получить доступ к свойству ViewBag на странице ViewStart?

1 Ответ

11 голосов
/ 29 января 2011

Есть два способа сделать это:

  1. Используйте свойство PageData (это более применимо к веб-страницам ASP.NET и редко используется в MVC)

    • Set:

      @{
          PageData["message"] = "Hello";
      }
      
    • Получить

      <h2>@PageData["message"]</h2>
      
  2. Попробуйте найти экземпляр представления (код немного грязный, но он дает вам доступ непосредственно к 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;
          }
      }
      
    • Получить: как обычно

      <h2>@ViewBag.Message</h2>
      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...