将我的项目命名空间添加到MVC web.config

Wat*_* v2 16 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我是否可以不将我的项目命名空间添加到web.config中,以便Razor视图引擎包含项目中所有页面的项目命名空间?像这样:

<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>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Optimization"/>
        <add namespace="System.Web.Routing" />

        <add namespace = "MyProjectNamespace.NestedNamespace"/>
      </namespaces>
    </pages>
  </system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)

它不起作用.

DVK*_*DVK 31

这是一个老问题,但显然Visual Studio仍然存在一些问题(2015年至2017年).将名称空间添加到Views文件夹中的web.config文件后,关闭并重新打开所有视图.命名空间未被识别,并且视图将持续引发运行时错误,直到我将它们全部关闭.

  • 感谢您特别指出VS2015.我坐在这里,脑子里想着......我知道你是怎么做的,wtf? (2认同)

dan*_*wig 26

需要将命名空间添加到Views文件夹中的web.config文件,而不是根项目的web.config.这将仅导入该视图文件夹中所有cshtml文件的命名空间.如果您的项目具有MVC区域,则每个区域将具有其自己的Views文件夹和单独的视图web.config文件.要将命名空间导入这些视图,您还需要将命名空间添加到每个区域的视图文件夹的web.config中.

  • 只是为了强化(因为它让我绊倒)视图的根,而不是在Views文件夹的任何子文件夹中!还要确保资源文件是公共的. (2认同)