我的 Razor 视图中出现奇怪的自动命名空间导入

2024-05-20

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

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

EDIT:

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

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.WebPages.Razor/WebPageRazorHost.cs 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>

EDIT:

以下来自 SO 答案here https://stackoverflow.com/questions/3875207/how-to-add-extra-namespaces-to-razor-pages-instead-of-using-declaration:

在预览版 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 Razor 视图中出现奇怪的自动命名空间导入 的相关文章

  • .net MVC、SelectList 和 LINQ

    我刚开始在 MVC 框架中使用 Html DropDownList 并且很难理解如何从数据库中选择数据以绑定到 DropDownList 有没有一种简单的方法可以从标准 LINQ 查询返回可绑定列表 例如 SelectList Select
  • 如何有效地测试action是否用属性(AuthorizeAttribute)修饰?

    我正在使用 MVC 并且有一种情况OnActionExecuting 我需要确定即将执行的Action方法是否用属性修饰 AuthorizeAttribute尤其 我不是问授权是否成功 失败 而是问该方法是否需要授权 对于非 MVC 人员
  • 如何从 System.Web.HttpPostedFileBase 转换为 System.Web.HttpPostedFile?

    在尝试实现 MVC 文件上传时example http www hanselman com blog ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludin
  • MVC 下拉列表未映射到模型

    我正在尝试使用 EF codefirst 在 MVC 3 中开发应用程序 当我使用 int 属性和约定来设置外键关系时 例如 public class Patient public int ConsultantId get set 然后 我
  • 为什么 DropDownListFor 无法识别编辑器模板中的选定值?

    我有以下名为 DropDown cshtml 的编辑器模板 这list部分工作正常 模板使用了一些我所做的巫毒来获得所需的SelectList from ViewData 控制器将视图模型中的所有选择列表放入ViewData 并且列表方面没
  • 在 asp.net mvc 4 中使用 LinkedIn OAuth“登录失败”

    我正在查看 asp net mvc 4 附带的默认 OAuth 实现 它绝对令人印象深刻 因为我所要做的就是在 AuthConfig cs 中添加这一行 OAuthWebSecurity RegisterLinkedInClient key
  • 具有 ASP.NET Identity 的 MVC 5 - 用户登录时获取声明

    我正在使用 OWIN 2 0 在登录用户后 我想从数据库中检索现有的声明 但如果我尝试获取用户的声明 它们将为空 如果我将相同的代码放入任何被调用的后续控制器中 那么声明就在那里 似乎只有在首次登录后的下一个请求之前 这些声明才可用 为什么
  • .net 4.7 中的依赖注入?

    我对 DI 有哪些集成选项有点困惑 我发现它对于 net core 对于我的特定项目 来说非常简单 但我不需要构建跨平台应用程序 也看不到使用 core 的优势 但是 net 框架应用程序似乎仍然使用 Global asax 设置且没有 S
  • 如何在ListBox中加载大量数据? ASP.NET MVC 应用程序

    我正在使用 ASP NET MVC 应用程序 要求用户能够从可能包含超过 30 000 个条目的列表框中选择一个项目 是否有一种使用 Ajax 调用来填充此 ListBox 内容的动态方法 效果良好 我是否最好只填充服务器上的 ListBo
  • mvc 2中的图像上传和预览

    我正在通过转换 asp net 网站来学习 mvc 2 在我的页面中 我必须上传图像并显示图像的预览 下面给出了我的 asp net 页面的屏幕截图 我将模型创建为 public class Contest public int conte
  • Owin 声明 - 添加多个 ClaimTypes.Role

    我有一个应用程序 可以在其中为用户分配以下角色 超级管理员 Admin User 一个用户可能分配了两个或多个角色 例如 超级管理员和用户 我的应用程序使用声明 因此我也想通过声明来验证用户角色 喜欢 Authorize Roles Adm
  • 服务层设计。将事物放入服务层的原因

    我有一些与设计相关的问题 should service layer interfaces居住在一个domain layer 例如user service 将代码部分移动到单独层的主要原因是什么 should service layer居住在
  • 为什么自定义类型变量不保存值MVC

    我正在尝试使用 MVC 5 构建一个网站 我有一个包含 3 个变量的控制器类 public class WorkerController Controller public ViewModel viewModel new ViewModel
  • IIS 7 错误:无法执行程序。正在执行的命令是 csc.exe(ApplicationPoolIdentity 默认设置)

    这是我的第一个问题 如果我有一些语法错误 请向我道歉 问题描述 我在多台服务器上安装了运行在 IIS 7 Windows Server 2008 和 SQL Server 2008 R2 上的基于 32 位 MVC 5 的 CRUD 系统
  • asp.net mvc 它能处理所有请求吗? - iis 7集成模式

    我有一个使用 asp net mvc 构建的网站 在 IIS 7 上使用集成模式运行 我注意到 当我输入 mysite com test html 时 我得到了 The IControllerFactory did not return a
  • 如何根据 ASP.NET VNEXT MVC6 中给出的路径进行虚拟路由/重定向?

    我有一个网站 它在不同的路径上公开多个 API 每个 API 由特定于应用程序部分的控制器处理 例如example com Api Controller Action param1 stuff 其中控制器发生变化 但操作保持相当一致 我有几
  • 传入字典的模型项是类型

    我有一个我理解的错误 但无法找出以正确的方式解决的方法 我有一个 MasterPage 我从该 MasterPage 中调用 标签是一个强类型视图 如下所示 我像这样返回 PartialView return View Tags resul
  • ASP.NET MVC 和 Expression XAML - 如何集成?

    一些背景 ASP net MVC 主要是构建和开发 ASP NET 应用程序方式的范式转变 从 代码隐藏 类型的心态转变为更像标准 MVC Ruby on Rails 的心态 我赞扬它作为一种简化工具来简化单元测试和代码分离 尽管 html
  • Visual Studio 智能感知搞砸了

    所以我是 MVC4 和 C 的新手 我已经设计这个网站大约两周了 智能感知没有任何问题 两天来 Visual studio 告诉我 Viewbag 和其他 命令不是我的项目的一部分 我可能错过了一些东西 或者它告诉我 Viewbag 在当前
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e

随机推荐