MVC 3が初めてです。2つのweb.configファイルを使用する理由は何ですか?
2つのweb.configファイルの違いは何ですか?また、それぞれの目的と機能は何ですか?
これに追加したいのは、/ Viewsフォルダー内のWeb.Configが、ビューの名前空間を明確に宣言する(そうでないとしても)すばらしい方法であることです。Webアプリケーションでは、ほとんどすべてのビューがViewModelを取得できる(実際のモデルの代わりに)それに渡されます。 @modelの後に完全な名前空間を宣言するか、同じ@using App.Web.Viewmodelsを使用するのは面倒です。この方法では、すべてのビューモデルが自動的に使用可能になり、実際のモデルをスコープ内に取得するために余分な作業を行う必要があります。
また、通常、アプリケーションは、ビューでの使用に特化した多くの拡張メソッドを取得できます(HTMLヘルパーが思い浮かびます)。 /Views/Web.Configでこの拡張クラスに名前空間を定義することは理にかなっています。そうすれば、「IntelliSenseが@ Html.ImageLink()メソッドを見つけられないのはなぜだろう?」
これは、web.config
ファイル継承の例です。 [〜#〜] msdn [〜#〜] から
ASP.NET構成ファイルをアプリケーションディレクトリ全体に配布して、継承階層でASP.NETアプリケーションを構成できます。この構造により、上位ディレクトリレベルの構成設定に影響を与えることなく、アプリケーションが適切なディレクトリレベルで必要とする構成の詳細レベルを実現できます。
具体的には、MVCプロジェクトの場合、View
サブディレクトリのweb.config
を使用して、.cshtml
/.aspx
ファイルを調整します。サブフォルダーでweb.config
ファイルを使用して、アプリの独自のルートから継承された設定を拡張、オーバーライド、削除し、階層をさらに上に移動できます。 machine.config
まで
/Views/web.config
の一般的な構成には次のものがあります。
404
応答は、そのような直接要求に対して構成されます。<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
using
を介して明示的に追加する必要があります。ここで、一般的なカスタムアセンブリの名前空間(カスタムhtmlヘルパー拡張機能など)を追加できます。 <namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
...
RequestValidation
フィルターを構成するには。構成に追加されたコメントは、これを最もよく説明しています。<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
Web.configファイルはViewsフォルダーに存在し、コントローラー以外の手段によるビューへのアクセスを防止します。 MVC設計パターンでは、コントローラーはリクエストをルーティングし、呼び出し元のクライアントにレンダリングされたビューを返すことになっています。
localhost9999://Home/Index.cshtmlに直接アクセスできないことを意味します。
ビューには独自の設定があります。エリアを扱っている場合、複数の設定について知るようになります。
実際のところ、ビューのWeb.Configは、ビューへの直接アクセスをブロックするなど、ビュー固有の構成用です。
編集1:コメントで尋ねられたより多くの説明。
Web.configファイルはViewsフォルダーに存在し、コントローラー以外の手段によるビューへのアクセスを防止します。 MVC設計パターンでは、コントローラーはリクエストをルーティングし、呼び出し元のクライアントにレンダリングされたビューを返すことになっています。これは、localhost9999://Home/Index.cshtmlに直接アクセスできないことを意味します。
ASP.NET構成は、web.config
ファイル(XMLファイル)に保存されます。
これらのファイルは、ASP.NETアプリケーションの多くのディレクトリに表示できます。これらは、メモ帳で編集できるという事実に基づいて、展開前でもアプリケーションの動作を構成するのに役立ちます。また、コードと構成データを分離し続けます。
すべてのweb.config
ファイルは、それが存在するディレクトリとすべての子サブディレクトリに適用されます。子ディレクトリのWeb.config
ファイルを使用して、親のweb.config
ファイルをオーバーライドできます。
Location要素を使用して、個々のファイルまたはディレクトリをオーバーライドするオプションがあります。 [〜#〜] link [〜#〜] を参照してください
設定の継承ルールは、箔のようです。
最初に、通常systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\
にあるmachine.configファイルがあります
同じディレクトリに、マシンで実行されているすべてのasp.netアプリケーションの設定を定義する「マスター」web.configファイルが存在します。
次に、アプリケーションに存在するweb.configファイルが来ます。
詳細: