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

时间:2012-12-31 11:37:06

标签: 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>

它不起作用。

3 个答案:

答案 0 :(得分:29)

这是一个老问题,但显然Visual Studio仍有一些问题(截至目前,2017年 2015 2017)。将名称空间添加到Views文件夹中的web.config文件后,关闭并重新打开所有视图。无法识别命名空间,并且视图会不断抛出运行时错误,直到我将它们全部关闭。

答案 1 :(得分:26)

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

答案 2 :(得分:-3)

您还可以向@using文件添加_ViewStart.cshtml语句,该文件将涵盖同一文件夹或任何子文件夹中的所有视图。

@using MyProjectNamespace.NestedNamespace