构建自定义基础模板剃刀引擎

Building Custom Base Templates razor engine

我正在使用 Razor 引擎来解析 .cshtml 文件。我正在尝试将基本模板文件更改为 System.Web.WebPages.WebPageBase。我发现剃刀引擎有这个东西,我可以在其中设置基本模板

config.BaseTemplateType = typeof(MyCustomTemplateBase<>);

问题是我无法直接将其设置为System.Web.WebPages.WebPageBase。所以我必须制作自己的自定义模板基础,就像这样

public abstract class MyCustomTemplateBase<T> : WebPageRenderingBase
{
    public override abstract HelperResult RenderPage(string path, params object[] data);
}

我只想要 RenderPage 功能,但是当我 运行 应用程序时,它给我这些错误

error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'CordovaBuild.MyCustomTemplateBase<dynamic>.RenderPage(string, params object[])'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageRenderingBase.Layout.get'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageRenderingBase.Layout.set'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageRenderingBase.PageData.get'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageRenderingBase.Page.get'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageRenderingBase.ExecutePageHierarchy()'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageExecutingBase.Write(object)'
 - error: (25, 18) 'CompiledRazorTemplates.Dynamic.RazorEngine_e15164c444b34d6d84d05aef3c711cff' does not implement inherited abstract member 'System.Web.WebPages.WebPageExecutingBase.WriteLiteral

您可能想要扩展 RazorEngine TemplateBase<T> 类 而不是 WebPageRenderingBase

详情见https://antaris.github.io/RazorEngine/TemplateBasics.html#Extending-the-template-Syntax

问题是 RazorEngine 需要 "its" 自己的接口而不依赖于 System.Web。

matthid,RazorEngine 贡献者。