【问题标题】:Razor, how to cache an ITemplateRazor,如何缓存模板
【发布时间】:2012-10-03 07:16:44
【问题描述】:

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

如何解决?

【问题讨论】:

    标签: asp.net-mvc templates razor


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 2018-07-07
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      相关资源
      最近更新 更多