質問

ネストされたマスターページにViewDataを割り当てる良い方法はありますか?たとえば、トップレベルのマスターページには、ログインしているユーザーに関する情報があるかもしれません。また、ユーザーが部門ページにいるときに表示されるネストされたマスターページもあります。そのデータは部門のページでのみ利用できるようにします。

だから、これはそれがどのように見えるかです:

Top Level Master Page - Includes ViewData["userData"]
    |
    |
    ---> Nested Master Page - Includes ViewData["departmentalData"]

したがって、ネストされたマスターページを使用するビューがある場合は、ViewData [" userData"]とViewData [" departmentalData"]の両方が含まれます。しかし、トップレベルのマスターページのみを使用している場合、ViewData [" userData"]しかありません。これは可能ですか?

役に立ちましたか?

解決

ViewDataをマスターページへのデータキャリアとして使用することを主張する場合(おそらく使用するMvcContribプロジェクトのHtml.RenderAction(...)を使用する代わりに)マスターページが使用されます。必要なデータをViewData [" departmentalData"]に入力するようにActionFilterをセットアップできます。

他のヒント

1つの可能性は、ViewPageとViewMasterPageの両方に拡張メソッドを記述して、必要なデータを取得することです。よくわかりませんが、これはRob Coneryが彼の Commerce.MVC パッケージで行ったことです。それを見てください。

同じ問題がありました。ここまでで、すべてのコントローラーの基本クラスと、ViewDataを生成するprotectedメソッドを思いつきました。この特定のマスターページを使用するすべてのアクションから呼び出します。

この質問に従って、他の人が何を思いついたのかを確認します。

MVCにはサブコントローラーの概念があります(これがまだ存在するかどうかはわかりませんが、MVCフレームワークでうまくいくでしょう)。 codeplexのmvc contribプロジェクトで見つけることができます。 いくつかの説明またはブログ投稿はここにあります...

http://mhinze.com/subcontrollers-in-aspnet-mvc/

およびそのサブコントローラーへのオブジェクトの受け渡しについては、ここで説明します...

http://mhinze.com/passing-objects-to-subcontrollers/

これはマスターページに基づいていませんが、あなたを助けることができます...

コントローラーが表示されるページに適切なViewDataを設定している限り、使用されているマスターページの数は問題ではありません。それとも何か不足していますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top