2009-06-02 19 views
8

ASP.NET MVCの厳密に型指定されたオブジェクトをマスターページにどのように配置しますか?マスターページにデータを挿入するにはどうすればいいですか?

マスターページ情報を含むすべてのビューモデルに対して継承するViewModelBaseクラスがありますか、それとも良い方法がありますか?

+0

これを行う有効なシナリオはありますか?一般的なビューでは、ビュー内で特定のコンテンツをレンダリングする必要があります。マスターページは、ビューが作成しているものに合わせて共通の要素のみを提供する必要があります。 –

+0

私はここからは完全に離れているかもしれませんが、現在ログインしているユーザー名などの情報をmasterpageに追加する必要がある場合は、厳密に型指定されたビューを使用すると考えました。ページに与えられたViewModelを使っていない場合、どうすればいいですか? – Alex

+0

標準の認証方法を使用しているとします。フォーム認証を使用し、それを行うことができます。<%= HttpContext.Current.User.Identity.Name%> –

答えて

10

アレックス、

は、私が「どこマスターページコントローラがある?」、あなたが求めているものだと思います

次のリンクをご覧ください。他のコントローラが継承できる抽象クラス "Application Controller"を作成する方法について説明します。これにより、必要なマスターページデータをビューにプッシュするコードを一度記述するだけで済みます。マスターページビューにデータを渡す

部分リクエストで:また
http://www.asp.net/learn/MVC/tutorial-13-cs.aspx

は、部分的なビューとサブコントローラASP.NET MVCでの実装方法を説明し、以下のリンクを見て、持っていますASP.NET MVC
http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

+0

(*)データ駆動型メニュー/ナビゲーションリンクはもはや動かないようです。新しいものは[http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs](http://www.asp)にする必要があります。net/mvc/tutorials/passing-data-to-view-master-pages-cs) –

3

これはまさに私が使用しているアプローチです。すべてのページに共通する情報を含むMasterViewData基本クラスを持ち、マスターページ(組み込みの認証、ページレベルのメッセージを使用していないときにログインしたユーザー)を表示するために使用されます。私の他のすべてのビューデータクラスは、それから派生しています。

私はまたRobertに言及しています:Viewメソッドをオーバーライドするベースコントローラークラスがあります。実際には、マスターページ情報のいくつかをビューデータクラスに入れて処理します。

他のオプションがあるのが不思議ですが、このアプローチは間違いなくうまく機能しています。

0

私たちは同様の基盤のViewDataを使用します。特に、一般的なUIの作業が多い大規模なコンテンツ指向の公開サイトでは、

一般的なビットを挿入するために使用するトリックは、私たちのコントローラーの回りにMasterPageViewModelを挿入するActionFilterを使用することです。これは、オーバーライドされたビューメソッドを持つ特別なコントローラクラスを持っているよりもはるかにクリーンです。間違いなくあなたが望む/必要としない場所があるからです。そして、全体の構成は継承物事を超えています。

+0

ワイアットのコード例はありますか?私はあなたがそれをどうやって管理したかったのだろうか。 – lloydphillips

関連する問題