9

_layout.cshtml ファイルのモデルを指定する方法があるかどうか疑問に思っていました。「代替」ソリューションで返信している基本的な同じ質問を持つ多くの投稿を見てきましたが、それが不可能だと言ったり、正確にどのようにできるかを示したりすることはありません。これを達成する

MVC に移行しようとしている Web フォームの経験があり、そのような質問をすることがよくあります。この Web サイトを見つけました: http://blog.bitdiff.com/2012/05/sharing-common-view-model -data-in.html は私の問題を部分的に解決しましたが、_layout.cshtml を @model にバインドしていません。私が知る限り、SharedContext にアクセスする場合は、各ビューでモデルを指定する必要があります。私が間違っている場合は修正してください

私がやりたかったのは、_layout.cshtml で "@model Namespace.MyModel" を宣言して、LayoutModel から継承する各ビューのモデルを実装する代わりに、その情報を単独で取得できるようにすることです。

*はっきりしているといいのですが、基本的には、_layout.cshtml で @model タグを宣言して、独自のモデルにアクセスできるようにする方法を知りたかったのです。

以前にリンクしたソリューションで (私の質問にはリンクされていませんが)、@(((BaseController)ViewContext.Controller).Context.Property) 共有情報を取得する必要があり、単純に宣言できる場合 (および代わりに @model を使用します。次のようなことを行うことで同じことを達成できます: @Model.Property*

ご覧のとおり、既に知っていることを Web フォームから MVC に移行するのに苦労していますが、慣れ親しんだものとはまったく異なる特定のプラクティスを採用する必要があるため、非常に困難です。

前もって感謝します

4

4 に答える 4

8

部分ビューと を使用して、「モデルが必要な」レイアウトの部分を別のコントローラーに委譲する必要がありますRenderAction

@Html.RenderAction("SomeAction", "LayoutController")

LayoutController.SomeAction返しPartialViewResultます。これをモデルに強く入力できます。

于 2013-07-26T06:59:06.467 に答える