我正在使用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)只接受字符串模板。
如何解决?
发布于 2013-01-13 20:39:16
缓存ITemplate实例的点并不重要,如果您多次运行一个实例,那么它的输出可能会出现问题。当您使用Resolve(name)时,它会使用您的ITemplateResolver来定位模板内容,然后编译该模板。由于您已经提供了一个名称,因此它将针对该名称缓存模板Type。随后对Compile(name)和Resolve(name)等的调用将导致使用现有的命名模板类型,而不是再次重新编译模板。
https://stackoverflow.com/questions/12703599
复制相似问题