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