Web.config的system.web/Pages/Namespaces标签有什么意义?

Jon*_*son 10 c# asp.net asp.net-4.0

无论我的机器的根网络配置(Windows/Microsoft.NET/...中的配置)是否包含system.web/pages/namespaces/add元素,仍然要求我在每个aspx.cs CodeBehind文件上包含using语句.为什么?它不应该编译而不是抱怨它无法理解页面是什么?毕竟,<add namespace="System.Web" />存在于根web.config中!

Ale*_*kov 9

system.web/pages/namespaces/add元素用于.ASPX文件,普通.CS文件(包括.ASPX.CS)仍然需要正确,using因为在编译之前没有对源进行预处理.所以.ASPX.CS必须是有效的CS文件,包括所有using Namespace声明.


Bra*_*ord 7

这会将命名空间添加到您的aspx和ascx文件中,这样您就不必包含<%@ Import Namespace="MyNameSpace" %>语句.

MSDN上文档:

namespaces元素定义在程序集预编译期间使用的import指令的集合.此属性对应于ASP.NET页面上的@ Import指令.@ Import指令允许您指定自动导入应用程序所有页面的名称空间.

您的代码隐藏不会受到这些web.config条目的影响.


Mik*_*ike 5

此处的其他答案表明此web.config设置仅影响ASPX页面,而不影响ASPX.CS等代码隐藏页面.我刚刚在一个针对.NET 4.0的ASP.NET网站上对此进行了测试,并且发现这对于C#页面来说是正确的,但对于VB页面则不然.

将名称空间添加到web.config设置中删除了将其列在每个ASPX.VB页面顶部的要求.

我会对任何理论感兴趣,为什么会这样.我原以为它可以用于文件后面的ASPX.CS和ASPX.VB代码.