如何为所有 cshtml 页面添加“默认使用”

本文关键字:默认 默认使用 添加 cshtml | 更新日期: 2023-09-27 17:56:31

我正在创建我的第一个 MVC.Net 应用程序,我发现自己几乎在每个页面上都包含@using Gideon.Core.Mvc;是否可以默认将其添加到所有页面?

Asp.Net,我能够将控件的默认内容添加到 web.config,希望也可以为 MVC.Net 完成。

如何为所有 cshtml 页面添加“默认使用”

您可以在

Views/Web.config<system.web.webPages.razor>部分添加它们。

这是默认值:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.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.Routing" />
        </namespaces>
    </pages>
</system.web.webPages.razor>
将它们

添加到Views/Web.config中。将命名空间添加到底部:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <namespaces>
            <add namespace="System.Web.Helpers" />
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="System.Web.WebPages" />
            <add namespace="Gideon.Core.Mvc" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

对于 .Net Core 用户,如果创建原版 Web 项目,可以通过添加

_ViewImports.cshtml

页面文件夹中的文件。

并在其中定义默认命名空间。

@using test
@namespace test.Pages

由于这个问题在谷歌上很高,让我添加一个与区域兼容的替代解决方案。

创建一个名为 PreApplicationStart(或所需的任何其他名称)的新类。

public class PreApplicationStart
{
    public static void InitializeApplication()
    {
        System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport("insert.your.namespace.here");
    }
}

Properties'AssemblyInfo.cs中添加以下行:

[assembly: System.Web.PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]

这样,命名空间在项目中的每个视图(包括区域内的视图)中都可用。将命名空间添加到web.config具有以下缺陷,如果使用区域,则最终必须将命名空间添加到每个区域中的每个web.config文件中。