编程语言
首页 > 编程语言> > c# – 如何使用RazorEngine中的相同键在更新的模板上运行Complie?

c# – 如何使用RazorEngine中的相同键在更新的模板上运行Complie?

作者:互联网

string template = "Hello @Model.Name, welcome to RazorEngine!";
var result = Engine.Razor.RunCompile(template, "templateKey", null, new { Name = "World" });

现在我将现有模板更新为如下所示.我从数据库中获取模板.

string template = "Hello @Model.Name, welcome to My World!";

每当我这样做,我得到一个错误相同的密钥已经用于另一个模板.

解决此问题的最佳方法是什么?

解决方法:

问题是您没有使用您传入的模板代码所特有的模板密钥.RazorEngine缓存模板并对其进行编译,以便下次运行时运行速度更快.

var helloTemplate = "Hello @Model.Name";

string result;
var model = new { Name = "World" };

//Has the template already been used? If so, Run without compilation is faster
if(Engine.Razor.IsTemplateCached("helloTemplate", null))
{
    result = Engine.Razor.Run("helloTemplate", null, model);
}
else
{
    result = Engine.Razor.RunCompile(helloTemplate, "helloTemplate", null, model);
}

标签:c,asp-net-web-api2,razorengine
来源: https://codeday.me/bug/20190623/1266111.html