1. ホーム
  2. asp.net

[解決済み] Razor _layout.cshtml のファイル名の先頭にアンダースコアがあるのはなぜですか?

2022-04-29 01:56:45

質問

デフォルトのASP.NET MVC 3プロジェクトでは、レイアウト&部分cshtmlファイルはアンダースコアで始まります。

  • _viewstart
  • _Layout
  • _LogOnPartial

なぜこのような規約があるのか、また何に使うのか?この規約に従わなければならないのでしょうか?

フレームワークでは .cshtml ファイルがアンダースコアで始まる場合はどうなりますか?

解決方法は?

Razor は ASP.NET Web Pages (WebMatrix) 用に開発されたもので、MVC のような Views フォルダと Routing に関する保護機能は組み込まれていません。Web Pages のレイアウトページは、直接提供されることを意図していないため、アンダースコアが前に付いています。また、Web Pagesフレームワークは、ファイル名にアンダースコアを含むファイルが直接リクエストされないように設定されています。Webページ内の他の.cshtmlファイルは、一般に閲覧可能であることが必要です。これらは、.aspや.phpファイルに相当するものです。

ASP.NETチームは、Web PagesはASP.NET開発の出発点であり、いずれはMVCへの移行につながるはずだと述べています(移行を希望する人のために)。その一環として、Web PagesからMVCへの移行を可能な限り容易にすることを意味しています。そのため、Web ページで確立された命名規則を MVC Razor ファイルに引き継ぐことは理にかなっています。

そこで は、ファイル名の前にアンダースコアを付ける技術的な理由であり、MVCには関係ありません。

[2018年10月UPDATE】の記事]

新しい ASP.NET Core Razor Pages フレームワークでは (バージョン 2.1 とは別に)、起動時にルートが生成される際、先頭にアンダースコアがあるファイルは無視されます - たとえそれが @page ディレクティブを使用することで、通常ルート化可能な Razor Page となります)。このため、Razor Pages アプリケーションでは、レイアウトファイルや部分ファイルにアンダースコアを付けることは、ブラウズされることを意図していないのであれば、理にかなっています。