我正在使用RazorEngine渲染模板(我们用作简报)。 RazorEngine 3(https://github.com/Antaris/RazorEngine)的一个好处是你可以使用: - 模板布局 - 包含模板
为此,您需要制作动态解析器服务。
这将解析并返回完整模板,作为compiledRazorTemplate:
ITemplate rTemplate = service.Resolve(templateId, parameters);
然后我做rTemplate.Run()
调用:
public static string Run(this ITemplate template)
{
ExecuteContext context = new ExecuteContext();
return template.Run(context);
}
问题是这不会缓存我的模板!我真的需要缓存它们。 但是Razor.Parse(template,model,cacheName)只接受字符串模板。
如何解决?
答案 0 :(得分:0)
缓存ITemplate
实例的实例几乎没有意义,如果多次运行实例,则可能会对其输出产生问题。当您使用Resolve(name)
时,它会使用您的ITemplateResolver
找到模板内容,然后编译该模板。在您提供名称后,它会根据该名称缓存模板Type
。对Compile(name)
和Resolve(name)
等的后续调用将导致使用现有的命名模板类型,而不是再次重新编译模板。