RazorGenerator预编译视图的视图的基类

本文关键字:视图 基类 编译 RazorGenerator | 更新日期: 2023-09-27 18:01:17

我有一个控制台项目,其中一些.cshtml文件存储在Resources文件夹中,该文件夹是用Razorgenerator.MsBuild nuget包构建到.cs文件中的。

我需要为生成的视图替换WebViewPage视图基类,但添加带有pageBaseType="ConsoleApp.MyViewBase"选项集的web.config文件或以不同方式更改文件位置对我没有帮助,也找不到任何其他方法。

视图类始终生成为:

public partial class _Resources_Index_cshtml : 
         System.Web.Mvc.WebViewPage<ConsoleApp.ModelClass> { ... }

希望,有一些方法可以为所有视图全局配置类,而无需在每个.cshtml文件的开头添加指令。

RazorGenerator预编译视图的视图的基类

看起来web.config中的设置基础视图可以在最新的RazorGenerator中工作。

因此,请更新您的RazorGenerator包,并尝试在web.config:中使用类似的内容

<configSections>    
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>
<system.web.webPages.razor>
  <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <pages pageBaseType="WebApplication2.Views.BaseView2">
    <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" />        
    </namespaces>
  </pages>
</system.web.webPages.razor>

在我的案例中,我将预编译(使用RazorGenerator.Mvc和RazorGenerator.MsBuild包(添加到旧项目中,但它并没有起作用。问题是我的configSections项目中有Version=2.0.0.0,不得不将其更改为Version=3.0.0.0

如果有人觉得它很有用,我有一个nuget包。它与Razorgenerator.MsBuild相同,但用Custom.System.Web.Mvc.WebViewPage替换了System.Web.Mvc.WebViewPage。因此,如果您想使用自定义WebViewPage,请安装该包并在命名空间custom.System.Web.Mvc.Like:中添加名为WebViewPage的类

namespace Custom.System.Web.Mvc
{
    public abstract class WebViewPage<T>
    {
    ...
    }
}