是否可以知道是否已使用RazorEngine编译特定模板?基本上,如果你打电话:
Razor.Parse("Hello there @Model.Name", model, "hello-world");
这将使用密钥'hello-world'编译模板。这可能是第一次花费几十毫秒,但由于缓存,第二次几乎是即时的。是否可以知道模板是否已编译?类似的东西:
var isCompiled = Razor.IsCompiled("Hello there @Model.Name", "hello-world");
答案 0 :(得分:3)
ITemplateService.HasTemplate
方法,但Razor
静态类型上不存在此方法,因此要使用它,您需要手动实例化和维护TemplateService
实例。
你真的需要知道它们是否已被缓存?我问,因为我们在开始解析模板之前考虑缓存,只要您调用ITemplateService.Parse
(Razor.Parse
)。
答案 1 :(得分:2)
从3.4.1.0开始Razor.Resolve(templateName)
如果模板不在缓存中,则返回null。如果您尝试确定缓存是否包含您发送的文本的特定版本,那么这可能没有用。
答案 2 :(得分:1)
您可以使用以下扩展方法:
public static class RazorEngineServiceExtensions {
public static bool IsTemplateCached(this IRazorEngineService service, string name, Type modelType);
}
一个例子:
if (!Engine.Razor.IsTemplateCached(templateName, modelType)) {
Engine.Razor.Compile(templateSource, templateName, modelType);
}