Asp.net-Mvc
為什麼 .NET 在 MVC asp.net 應用程序中生成兩個 web.config 文件?
我是 MVC 3 的新手。使用兩個 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 項目,子目錄
web.config中的/文件View是用來剪裁的。您可以使用子文件夾中的文件來擴展、覆蓋和刪除從應用程序自己的根目錄繼承的設置,並進一步提升層次結構,例如最多.cshtml``.aspx``web.config``machine.config中的常見配置
/Views/web.config包括:
- 阻止嘗試直接訪問 razor 和 aspx 視圖的請求(這些需要通過適當的路由從控制器提供)。為
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為 MVC配置 anti-xss過濾器。配置中添加的評論最好地解釋了這一點:<!-- 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. -->
