2012-10-03 59 views
0

我使用RazorEngine來渲染模板(我們用作通訊)。 與RazorEngine 3(https://github.com/Antaris/RazorEngine)一個好處是,你可以使用: - 模板佈局 - 包括模板剃刀,如何緩存ITemplate

對於這個工作,但是你需要進行動態解析服務。

這就解決,並返回我的完整的模板,爲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)只接受字符串模板。

如何解決?

回答

0

如果您多次運行一個實例,您可能會遇到輸出問題,那麼很難緩存實例的一個實例。當您使用Resolve(name)時,它使用您的ITemplateResolver來查找模板內容,然後編譯該模板。當您提供了一個名稱時,它將緩存模板Type與該名稱。隨後調用Compile(name)Resolve(name)等,將導致使用現有的已命名模板類型,而不是再次重新編譯模板。