2011-01-28 1 views
22

私は、ViewStartレベルで設定したい特定のViewBagプロパティを持っています。理想的には、必要に応じて、ページベースでそのプロパティをオーバーライドできるようにしたいと考えています。これは可能ですか?その場合は、ViewStartページ内のViewBagプロパティにどのようにアクセスすればよいですか?_ViewStart.cshtmlでViewBagプロパティを設定するにはどうすればよいですか?

+0

改訂版の回答を参照してください。 – marcind

答えて

10

これを行うには、2つの方法があります。

  1. PageDataプロパティを使用します(これはASP.NETのウェブページへのより適用何かだとめったにMVCで使用していない)

    • セット:

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

      <h2>@PageData["message"]</h2> 
      
  2. (コードが少し汚れているが、それはあなたがViewBag/ViewData

    • に直接設定されたアクセス与えないビューのインスタンスを検索してみてください:

      ​​
    • Retrieve:通常通り

      <h2>@ViewBag.Message</h2> 
      
+0

これは残念です。アクションフィルタは私の状況には意味がありません。どのメニューがアクティブであるかをレイアウトに伝えるプロパティを設定したかったのです。私はちょうど各ページにプロパティを追加すると思います。 –

+0

@ジム私は速すぎました。改訂版の回答を参照してください。 – marcind

+0

ViewPageはセッションの代わりにページに付いているSessionVarに似ていますか? – justSteve

関連する問題