Dat*_*tta 36 asp.net-mvc web-config asp.net-mvc-3
我是MVC 3的新手.使用两个web.config文件的原因是什么?

这2个web.config文件之间的区别是什么,以及每个文件的功能是什么?
Stu*_*tLC 53
这是web.config文件继承的一个示例.来自MSDN
您可以在整个应用程序目录中分发ASP.NET配置文件,以在继承层次结构中配置ASP.NET应用程序.此结构允许您在相应的目录级别实现应用程序所需的配置详细信息级别,而不会影响更高目录级别的配置设置.
具体来说,对于MVC项目,子目录web.config中的View子目录用于定制.cshtml/ .aspxfiles.您可以使用web.config子文件夹中的文件来扩展,覆盖和删除从应用程序自己的根继承的设置,并进一步提升层次结构,例如machine.config
/Views/web.config包含的常见配置包括:
404响应被配置用于这种直接请求,例如<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
Run Code Online (Sandbox Code Playgroud)
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
...
Run Code Online (Sandbox Code Playgroud)
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.
-->
Run Code Online (Sandbox Code Playgroud)
Cér*_*ink 20
我想补充一点,/ Views文件夹中的Web.Config是一种很好的(如果不是那种)方式来专门为您的视图声明名称空间.在Web应用程序中,几乎每个视图都可以获得ViewModel (而不是你的实际模型)传递给它.在@model之后声明完整的命名空间或具有相同的@using App.Web.Viewmodels变得乏味.通过这种方式,所有视图模型都可以自动使用,您必须做额外的工作才能获得范围内的真实模型,然后立即设置一些警报.
此外,通常应用程序可以获得许多专门用于视图的扩展方法(HTML-helper跳转到脑海中).在/Views/Web.Config中为此扩展类定义名称空间是有意义的.这样你就不会怀疑"为什么IntelliSense无法找到我的@ Html.ImageLink()方法?"
View有自己的配置.如果您正在处理区域那么您将了解多个配置.
实际上,重点是视图的Web.Config用于视图特定配置,例如阻止对视图的直接访问.
编辑1:评论中提到的更多解释.
web.config文件存在于Views文件夹中,以防止通过控制器以外的任何方式访问您的视图.在MVC设计模式中,控制器应该路由请求并将呈现的视图返回给调用客户端.这意味着不应该直接访问localhost9999://Home/Index.cshtml.
web.config文件存在于Views文件夹中,以防止通过控制器以外的任何方式访问您的视图.在MVC设计模式中,控制器应该路由请求并将呈现的视图返回给调用客户端.
表示localhost9999://Home/Index.cshtml不应该直接访问.