如何为所有 cshtml 页面添加“默认使用”
本文关键字:默认 默认使用 添加 cshtml | 更新日期: 2023-09-27 17:56:31
我正在创建我的第一个 MVC.Net 应用程序,我发现自己几乎在每个页面上都包含@using Gideon.Core.Mvc;
。是否可以默认将其添加到所有页面?
Asp.Net,我能够将控件的默认内容添加到 web.config,希望也可以为 MVC.Net 完成。
您可以在
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
文件中。