ページの上部ヘッダーに Web サイト名を表示する MVC3 Web サイトがあります。これは、site.master ページからのものです。その静的ヘッダー名をページ上部のドロップダウンに変換したいと思います。選択が変更されたとき - 別の site.master ページを表示したい (コンテンツ ビューは、元の選択とは完全に異なるコントローラーから取得されます)。MVC3 Web アプリでこれを行うにはどうすればよいですか?
2 に答える
デフォルトでは、すべてのページが_ViewStart.cshtml
MVC3 Web アプリケーション プロジェクトの Views ディレクトリの直下にある を使用します。これは、ディレクトリ_Layout.cshtml
の下の (mvc のマスター ページ) を指しますViews/Shared
。
対応するビュー ディレクトリの下に Individual を配置_ViewStart.cshtml
すると、デフォルトの動作がオーバーライドされます。したがって、ホームビューを例にとると、_ViewStart.cshtml
下にありますViews/Home
ここで_ViewStart.cshtml
は、特定のレイアウトが返されます。したがって、コードは
@{
Layout = "~/Views/Shared/_HomeLayout.cshtml";
}
ご覧のとおり、独自のレイアウト マスターを作成し、それをディレクトリ_HomeLayout.cshtml
の下に配置します。Views/Shared
必要に応じて、これをビューの数だけ繰り返します (ビューを指定しない場合は、常にデフォルトのビューが使用されます)。以下のスクリーンショットをご覧ください。後で必要に応じて、ドロップダウンを使用してさまざまなビューを選択できます。
選択を変更すると、ウィンドウを新しいURLにリダイレクトして、コントローラーで特定のアクションメソッドを実行するのは簡単です。
実際のコード例はありませんが、わかりやすい英語で説明してみましょう
たとえば、デフォルトでHomeControllerのインデックスアクションメソッドをロードする場合、インデックスビューは「site.master」を使用します。選択を変更したら、ブラウザを別のURL( " NewHome / Index ")にリダイレクトします。NewHomeControllerの下のインデックスビューには、次の方法で設定できる別のマスターページがあります。
以下のコードを入れてください
@{
Layout = "~/Views/Shared/_NewHomeLayout.cshtml";
}
- 「 NewHome」ビューフォルダ の下の新しい_ViewStart.cshtmlファイルに。
- NewHomeインデックスビューで、上記と同じコードを使用してレイアウトを直接設定します