gpt4 book ai didi

asp.net-mvc - 在我的 Razor View 中奇怪的自动命名空间导入

转载 作者:行者123 更新时间:2023-12-02 00:14:47 25 4
gpt4 key购买 nike

今天我注意到,例如“System”和“System.Web.Security”被导入到我所有的 razor View 中,尽管我没有主动导入它们。我检查了:

  • @using 指令
  • web.config(编辑:也是全局 web.config)
  • 添加全局导入

编辑:

似乎这些命名空间导入在 Razor 源代码中是硬连线的

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.WebPages.Razor/WebPageRazorHost.cs

    private WebPageRazorHost()
{
NamespaceImports.Add("System");
NamespaceImports.Add("System.Collections.Generic");
NamespaceImports.Add("System.IO");
NamespaceImports.Add("System.Linq");
NamespaceImports.Add("System.Net");
NamespaceImports.Add("System.Web");
NamespaceImports.Add("System.Web.Helpers");
NamespaceImports.Add("System.Web.Security");
NamespaceImports.Add("System.Web.UI");
NamespaceImports.Add("System.Web.WebPages");
NamespaceImports.Add("System.Web.WebPages.Html");

// ...
}

我似乎也无法通过在 web.config 的开头设置“clear”来禁用它们:

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage" >
<namespaces>
<clear />
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web.webPages.razor>

因此除非更改 Razor 源,否则此问题可能无法解决。

最佳答案

它很常见,因为它在以下位置的整个 Web 配置文件中注册:

systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Web.config  

它是这样注册的:

 <pages>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
<add namespace="System.Collections.Generic" />
<add namespace="System.Collections.Specialized" />
<add namespace="System.ComponentModel.DataAnnotations" />
<add namespace="System.Configuration" />
<add namespace="System.Linq" />
<add namespace="System.Text" />
<add namespace="System.Text.RegularExpressions" />
<add namespace="System.Web" />
<add namespace="System.Web.Caching" />
<add namespace="System.Web.DynamicData" />
<add namespace="System.Web.SessionState" />
<add namespace="System.Web.Security" />
<add namespace="System.Web.Profile" />
<add namespace="System.Xml.Linq" />
</namespaces>
</pages>

编辑:

以下来自 SO 答案 here :

在预览版 1 中,Razor 使用了 WebForms 命名空间配置部分。但是在 Beta 中有一个新的配置部分,它与 WebForms 分开。您需要将以下内容添加到您的 web.config 文件中(或者只是从模板中的全新项目开始):

<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>

<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="MyCustomHelpers" />
</namespaces>
</pages>
</system.web.webPages.razor>

关于asp.net-mvc - 在我的 Razor View 中奇怪的自动命名空间导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13759137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com