我想从模板生成邮件。
模板看起来与此类似:
<h1>@Model.Name</h1>
@foreach(var row in Model.Rows)
{
<p>@row</p>
}
@if(Model.Case)
{
<p>Thats the case</p>
}
这些模板存储在数据库中,每个用户只有少量(~10个),并且可能会被修改。
到目前为止,我们使用了RazorEngine,我们只需要调用Razor.Parse()
。这对我们来说很好,直到我们遇到磁盘空间问题。
(Parse()在temp文件夹的每个调用中生成一个新程序集,所以它们中有很多个)
所以我认为我需要切换到使用RazorEngines新功能Compile(), Run(), RunCompile()
认为可以编译模板(给它DB-Id作为模板键)进行更改时所以我只有一个每个模板的装配。然后,当我需要带有数据的邮件时,我会调用'Run()'。但这是不可能的。另一个问题是内存泄漏,因为每个模板程序集都将保留在缓存中。
我们还查看了stringtemplate.org(c#开发状态看起来不太好)和Microsofts MailDefinition(只能用于变量,不支持循环......)
基本上我正在寻找一个不缓存任何内容的RazorEngine。我使用Razor.Parse()
并且没有任何性能问题。
RazorEngine中是否有设置,我没有看到,禁用缓存? RazorEngine有替代品吗?或者甚至有不同的方法从模板生成邮件?
答案 0 :(得分:0)
Have you looked into T4 Text Templates? You can build design-time or run-time text templates that "compile" to anything. A few examples of this in the real world:
"Executing" the template is as easy as one line of code:
var templateOutput = new MyTemplateClass().TransformText();
There are more advanced options, such as passing in parameters/variables to the template, which are documented well in MSDN.