剃刀,如何缓存模板

时间:2012-10-03 07:16:44

标签: asp.net-mvc templates razor

我正在使用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)只接受字符串模板。

如何解决?

1 个答案:

答案 0 :(得分:0)

缓存ITemplate实例的实例几乎没有意义,如果多次运行实例,则可能会对其输出产生问题。当您使用Resolve(name)时,它会使用您的ITemplateResolver找到模板内容,然后编译该模板。在您提供名称后,它会根据该名称缓存模板Type。对Compile(name)Resolve(name)等的后续调用将导致使用现有的命名模板类型,而不是再次重新编译模板。