1. ホーム
  2. asp.net-mvc

[解決済み] すべてのエリアで同じレイアウトを使用するように強制する

2023-03-08 21:22:34

質問

以下のようなプロジェクト構成になっています。

  • /Views/Shared/_Layout;

  • /Areas/Area1/Views/ControllerName/Indexを指定します。

...

  • /Areas/AreaN/Views/ControllerName/Indexを指定します。

すべてのエリアで強制的に レイアウト として ベースレイアウト ?

を追加することなく、それを行う方法はありますか? _ViewStart ファイルを追加することなく(たとえばルーティング設定によって)行う方法はありますか?

も参照してください。

ASP.NET MVC 3 razor の ViewStart ファイルで異なるレイアウトを指定するにはどうすればよいですか。

どのように解決するのですか?

という名前のファイルを追加するだけです。

_ViewStart.cshtml

各エリアのビューフォルダの下に

/Areas/Area1/Views/_ViewStart.cshtml

そして、このようなルートレイアウトを指すようにファイルを編集します。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

これを動作させるために、ビューのレイアウトプロパティに値を指定する必要はありません。もし指定した場合、グローバルレイアウトをオーバーライドすることになります。

注意: Tonyが言及したように、あなたは を編集してルートレイアウトを指定することもできますが、これはビューとレイアウトを結合することになり、変更に手間がかかるため、推奨される方法ではありません。

編集 1

デフォルトのビューのレイアウトを設定するコードを使用したい場合、おそらくカスタムビューエンジンを書くことを検討すべきです。

カスタムビューエンジンについてググってみてください。 RazorViewEngineRazorView

この記事は良いスタート地点になるでしょう

http://weblogs.asp.net/imranbaloch/archive/2011/06/27/view-engine-with-dynamic-view-location.aspx

私はこのようなことをしたことがありませんが、私が正しい方向を示していることを望みます。