_viewstart.cshtmlを使用して、同じ Razor レイアウトをビューに自動的に割り当てています。
これは、Views フォルダーのルートにある非常に単純なファイルで、次のようになります。
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
これは、すべてのビューに @Layout ディレクティブを追加するよりも DRY です。
ただし、Razor部分ビューでは _viewstart.cshtml のコンテンツが実行され、レイアウトが誤って割り当てられ、部分ビューではなくなるため、問題が発生します。
これは、_viewstart.cshtml ファイル、共有 _layout.shtml ファイル、および部分ビュー ("AnonBar.cshtml") を示す架空のプロジェクトです。
現在、これを回避する方法は、次の行をすべての部分ビューに追加することです。
@{
Layout = "";
}
これは、Razor でビューをパーシャルとして示す方法が間違っているようです。(Web フォーム ビュー エンジンとは異なり、部分ビューのファイル拡張子は同じであることに注意してください。)
私が検討した他のオプションですが、それはさらに悪いです:
- すべての部分ビューを共通のフォルダーに配置して、共通の _viewstart.cshtml を共有できるようにします。これにより、ビューがコントローラーと同じフォルダーにあるという規則が破られます。
- 部分ビューを使用しない。
これは Razor ビュー エンジン チームによってまだ肉付けされているものですか、それとも基本的な概念が欠けているのでしょうか?