【问题标题】:Add namespace to all views in ASP.NET MVC 6将命名空间添加到 ASP.NET MVC 6 中的所有视图
【发布时间】:2015-04-27 11:07:08
【问题描述】:

我正在使用 MVC 6,并且希望能够从我的所有 Razor 视图全局访问特定的命名空间。在 MVC 5 中,这相当简单。我只需将以下代码添加到我的 ~/views/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.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Optimization"/>
            <add namespace="System.Web.Routing" />
            <add namespace="MyProject.WebUI" />
            <add namespace="MyProject.WebUI.Helpers" /><!-- Added this line -->
        </namespaces>
    </pages>
</system.web.webPages.razor>

我在其中添加了对 MyProject.WebUI.Helpers 命名空间的访问权限。

在 ASP.NET 5 和 MVC 6 中,web.config 文件已被删除,所以我不知道如何继续这样做了。我试过寻找答案,但我能找到的只是如何在当前版本的 ASP.NET 而不是 v5 中做到这一点。

有什么想法吗?

编辑:澄清我会使用哪个web.config文件。

【问题讨论】:

  • 你在哪里添加了这个命名空间 ~/web.config 或 ~/views/web.config ?
  • 这本来应该在~/views/web.config 中,但是 ASP.NET 5 根本不使用web.config 文件,所以我不知道我需要添加什么,甚至不知道我需要在哪里添加它到。
  • 如果您将这些文件添加到 ~/views/web.config 文件中,请卸载您的项目,然后尝试重新加载。
  • Visual Studio 2015 (CTP 6) 似乎甚至没有添加web.config 文件的选项。我假设我需要使用 Config.json 文件,但我不确定添加命名空间的语法是什么。
  • 在 MVC6 应用程序中没有 ~/views/web.config ? config.json 是否在 ~/views/ 文件夹中?

标签: asp.net-core asp.net-core-mvc


【解决方案1】:

对于 @using 语句。又名:

_ViewStart.cshtml:@using MyProject.WebUI.Helpers

如果您没有 _ViewStart.cshtml,您可以创建一个并确保它位于您希望它影响的视图的相同路径或父路径中。

对于 beta4 位,此功能已移至名为 _GlobalImport.cshtml 的新文件中; _ViewStart.cshtml 已转换回其原始功能(只是运行代码,而不是继承指令)。因此:

_GlobalImport.cshtml:@using MyProject.WebUI.Helpers

对于 beta5 位,_GlobalImport.cshtml 已重命名为 _ViewImports.cshtml

【讨论】:

  • 在 Beta5 中是 _ViewImports.cshtml github.com/aspnet/Announcements/issues/27
  • 对我来说同时拥有 _ViewStart 和 _ViewImports 似乎是多余的。
  • 如果您不介意,我添加了一个仅包含最新位的答案,当现在每个人都使用 RC1+ 并且 RTM 非常接近时,指定 beta 3、4、5 是多余的。
  • 我没有 Views 文件夹,也没有 _ViewImports.cshtml
【解决方案2】:

将您的命名空间添加到_ViewImports.cshtml 文件(位于 Views 文件夹下)。

示例文件:

@using Microsoft.AspNetCore.Identity
@using Jifiti.Registry.Web.Models.AccountViewModels
@using Jifiti.Registry.Web.Models.ManageViewModels

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

【讨论】:

    【解决方案3】:

    我正在使用 beta 7,我必须使用

    @using System.Security.Principal
    @using System.Security.Claims
    
    @Context.User.GetUserId()
    

    【讨论】:

    • 我认为对这些文件放在哪个文件或何时使用这些指令进行更多解释会得到更好的答案。
    猜你喜欢
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2013-01-16
    • 2016-12-06
    • 1970-01-01
    • 2011-10-23
    • 2012-12-26
    相关资源
    最近更新 更多