私は使用しています_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 ビュー エンジン チームによってまだ具体化されているものなのでしょうか、それとも基本的な概念が欠けているのでしょうか?
ベストアンサー1
return PartialView()
コントローラーから ( の代わりにreturn View()
)を使用すると、 は_viewstart.cshtml
実行されません。