0

我正在使用 RazorEngine 来呈现模板(我们用作时事通讯)。RazorEngine 3 (https://github.com/Antaris/RazorEngine) 的一个好处是您可以使用: - 模板布局 - 包含模板

但是,要使其正常工作,您需要创建一个动态解析器​​服务。

这将解析并返回完整的模板,作为已编译的 RazorTemplate:

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) 只接受字符串模板。

怎么解决?

4

1 回答 1

0

缓存实例的ITemplate实例没有什么意义,如果您多次运行一个实例,您可能会遇到它的输出问题。当您使用 时Resolve(name),它使用您ITemplateResolver来定位模板内容,然后编译该模板。当您提供了一个名称时,它将Type根据该名称缓存模板。Compile(name)对、 和等的后续调用Resolve(name)将导致使用现有的命名模板类型,而不是再次重新编译模板。

于 2013-01-13T12:39:16.430 回答