15

しばらくグーグルで調べていたので、asp mvc 3でこれを行う方法に少し混乱しています。

したがって、タスクは、いくつかのコントローラーのビューに共通のレイアウト (またはマスター?) ページを用意することです。すべてのビューは、それ自体が厳密に型指定されています... 実際、このレイアウト ページは、厳密に型指定されたオブジェクトを視覚化しています。したがって、このオブジェクトをレイアウト ページに渡して「Html.RenderPartial()」に渡すか、ページ内で正しくレンダリングする必要があります。

記事Passing Data to View Master Pages (C#) (mvc2 の古いものですが) は、モデルを に渡す、基本抽象コントローラー クラスを提供する例を示していますViewData。これで治るかもしれません。

しかし...

いくつかのスレッドで、厳密に型指定されたマスター ページを作成する方法を見つけました。

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %>

それで、mvc3にも同じアプローチがありますか? または、データをレイアウト ページに渡す唯一の方法は、ViewBag または ViewData を使用することですか?

ViewModel データを asp.net-mvc のマスター ページにバインドする最良の方法を読んだ後、Darin の回答を検討しましたが、このビューの束は同じレイアウトになると考えており、DRY に反対する理由はないと考えています。原理。

では、厳密に型指定されたオブジェクトをレイアウト ページに渡すにはどうすればよいでしょうか。それとも私は何かを混ぜましたか?

4

1 に答える 1

18

これは興味深い議論のトピックです ->view modelsマスターページ/レイアウトへの引き渡し vs ViewBags.

私は嫌いなViewBagsので、すべてのビューレイヤーのビューモデルを持っています。上_layout.cshtmlから上へ。レイアウトを使用するビュー..まあ..そのビューモデルはレイアウトを継承するだけです..またはその下にあるビュー..これは、通常は_layoutである最下位レベルに到達するまで繰り返されます...

私のRavenOverflow プロジェクトには、これを示すサンプル コードがいくつかあります。

于 2012-10-18T02:50:57.347 に答える