web-dev-qa-db-ja.com

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

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

  • _viewstart
  • _Layout
  • _LogOnPartial

なぜこの規則であり、これは何のために使用されますか?この規則に従う必要がありますか?

フレームワークは、アンダースコアで始まる.cshtmlファイルに特別な意味を与えますか?

139
richb

RazorはASP.NET Webページ(WebMatrix)用に開発されました。これには、MVC内で取得するビューフォルダーとルーティングに関して同じ種類の保護が組み込まれていません。 Webページのレイアウトページは直接提供されることを意図していないため、アンダースコアがプレフィックスとして付けられます。また、Webページフレームワークは、名前に先頭の下線が含まれるファイルが直接要求されないように構成されています。 Webページ内の他の.cshtmlファイルは通常、閲覧可能である必要があります。これらは、.aspまたは.phpファイルと同等です。

ASP.NETチームは、WebページはASP.NET開発の出発点であり、MVCへの移行に時間をかけて移行する必要があると述べています(先に進みたい人にとって)。その一部は、WebページからMVCへの移行が可能な限り簡単であることを意味します。したがって、Webページ内で確立された命名規則をMVC Razorファイルに引き継ぐことは理にかなっています。

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

[2018年10月更新]

新しいASP.NET Core Razor Pagesフレームワーク(バージョン2.1を除く)では、@pageディレクティブ(通常はそれらを作成します)がある場合でも、起動時にルートが生成されるとき、先頭にアンダースコアが付いたファイルは無視されますルーティング可能なRazorページ)。そのため、Razor Pagesアプリケーションで参照するつもりがない場合は、レイアウトと部分ファイルにアンダースコアを先頭に付けることは理にかなっています。

199
Mike Brind

Ruby on Railsはそれを行います(Partialsは_で始まりますが、Render Partial呼び出しには_は含まれません)、ASP.net MVCは描画しますそれからの大きなインスピレーション。

技術的な理由はまったくありません。他の開発者(および6か月後の自分)に次のように言う意図を明確に示すための規則です。これは部分的な見解です。

13
Michael Stum

ブラウザからの直接リクエストでは表示できないページ(マスターページ、部分ビューなど)には、名前の先頭にアンダースコア(_)が付いています。

したがって、_Layout.cshtml(これはマスターページです)にリクエストを行おうとすると、サーバーからエラーが発生します。

Razorビューエンジンで、スタンドアロンページとして参照できないファイルを区別する方法。

このように考えてみてください... MVC 2では...部分ビューを区別し、マスターサイトを接尾辞.master、.ascxで区別します。一方、通常のページは.azxです。一方、Razorビューでは...すべてのビューは.cshtmlであるため、部分ページとマスターページを区別するために、プレフィックス(_)が付いています。必須ではなく、単なる「コンベンション」です。

7
Juztin

私の知る限り、これは単にファイルの意図を識別するために使用される規則です。実際にファイルの動作が変わるとは思わない。ほとんどの開発コンテキストでは、アンダースコアを前に付けることで、クラス、この場合は別のテンプレートなど、「プライベート」な使用を意味するものを識別します。

2
futureal

私はMVCを使用しませんが、かみそり構文も使用するWebページでは、_プレフィックスは通常、ページがユーザーではなく他のページまたは何らかのコードによってアクセスされることを意味します。 _prefixを含むページに移動しようとすると、asp.netはアクセスできません。ユーザーが直接アクセスするべきではないので、レイアウトページやその他のページで使用される理由です。

Asp.netのApp_Codeフォルダーのようなもの

1
Travis