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

时间:2015-07-21 12:06:27

标签: asp.net-mvc razor razorengine

我正在使用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

1 个答案:

答案 0 :(得分:2)

您可能希望扩展RazorEngine TemplateBase<T>类而不是WebPageRenderingBase

有关详细信息,请参阅https://antaris.github.io/RazorEngine/TemplateBasics.html#Extending-the-template-Syntax

问题在于RazorEngine期望“它”自己的界面并且不依赖于System.Web。

matthid,RazorEngine的贡献者。