_viewstart.cshtml と部分的な Razor ビューを使用する正しい方法は? 質問する

_viewstart.cshtml と部分的な Razor ビューを使用する正しい方法は? 質問する

私は使用しています_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実行されません。

おすすめ記事