在没有@using的ASP.NET视图中全局导入命名空间

时间:2015-07-10 18:55:08

标签: asp.net asp.net-mvc razor asp.net-mvc-5

在我的ASP.NET MVC 5应用程序中,我将所有模型都放在命名空间MyApp.Models中。要在我的视图中使用模型,例如要告诉视图他应该使用@model UserLoginModel的模型,我必须使用using MyApp.Models导入名称空间。

这不是什么大问题,但我希望它能在我的每个视图中自动包含此命名空间,以避免在每个视图中进行冗余导入。我发现我的views-folder中的web.config文件似乎适合这项工作

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.Optimization"/>
    <add namespace="MyApp" />
    <add namespace="MyApp.Models"/>
  </namespaces>
</pages>

但它不起作用。所有这些都是由Visual Studio预先生成的。我只为我的模型添加了<add namespace="MyApp.Models"/>

On SO我发现similar question和我一样{但是}提问者只是说我应该使用Views/web.config文件,因为我尝试了,而问题回答了他的问题ASP.NET MVC 6.但我正在使用MVC 5.1.2并且无法使其工作,他在视图中没有包含@using的命名空间时找不到视图。

1 个答案:

答案 0 :(得分:-1)

您可以使用新的_ViewImports.cshtml全局添加命名空间。内容的一个例子是:

@using Microsoft.AspNet.Identity
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"