我是否可以不将我的项目命名空间添加到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>
它不起作用。
答案 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