19

我可以不将我的项目命名空间添加到 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>

它不工作。

4

3 回答 3

34

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

于 2015-09-29T14:50:52.057 回答
28

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

于 2012-12-31T13:55:48.010 回答
-3

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

@using MyProjectNamespace.NestedNamespace
于 2013-01-01T19:57:37.770 回答