1. ホーム
  2. razor

[解決済み] _viewstart.cshtml と部分的な Razor のビューを使用する正しい方法?

2022-04-27 08:01:59

質問

を使っています。 _viewstart.cshtml と同じ Razor レイアウトを自動で割り当てることができます。 をビューに追加しました。

Viewsフォルダのルートにある、以下のようなシンプルなファイルです。

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

これは、すべてのビューに @Layout ディレクティブを追加するよりも DRY です。

しかし、これは Razor にとって問題となります。 パーシャル ビューは _viewstart.cshtml の内容を実行するため、誤ってレイアウトを割り当ててしまい、その結果、部分的でなくなってしまうからです。

以下は、仮想的なプロジェクトで、_viewstart.cshtml ファイル、共有された _layout.shtml ファイル、および部分ビュー ("AnonBar.cshtml") が表示されています。

現在、私が行っている方法は、すべてのパーシャルビューに次の行を追加することです。

@{
    Layout = "";
}

これは、Razor でビューをパーシャルと表記する方法として間違っているように思えます。(ウェブフォームのビューエンジンとは異なり、ファイルの拡張子はパーシャルビューでも同じであることに注意してください)。

他のオプションも考えましたが、さらに悪いものです。

  • すべての部分ビューを共通のフォルダに入れ、共通の _viewstart.cshtml を共有できるようにする。これは、ビューがそのコントローラと同じフォルダにあるという慣習を破るものです。
  • パーシャルビューを使用しない。

これはRazorのビューエンジンチームによってまだ練られていないことなのでしょうか、それとも私が基本的な概念を見逃しているのでしょうか?

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

もし、あなたが return PartialView() の代わりに)コントローラから return View() を指定すると _viewstart.cshtml は実行されない。