【发布时间】:2016-10-19 11:50:07
【问题描述】:
故事
我想从模板生成邮件。
模板看起来类似于:
<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() 每次调用都会在临时文件夹中生成一个新程序集,所以数量很多)
我尝试了什么
所以我认为我需要切换到使用 RazorEngines 新功能 Compile(), Run(), RunCompile() 认为可以在进行更改时编译模板(将 DB-Id 作为模板键),所以我每个人只有一个程序集模板。然后,当我需要包含数据的邮件时,我会调用“Run()”。但这是不可能的。另一个问题是内存泄漏,因为每个模板程序集都将保留在缓存中。
我们还查看了 stringtemplate.org(c# 开发状态看起来不太好)和 Microsoft 的 MailDefinition(只能用于变量,不支持循环...)
我在寻找什么
基本上,我正在寻找一个不缓存任何内容的 RazorEngine。我使用Razor.Parse() 并没有遇到任何性能问题。
我没有看到 RazorEngine 中是否有禁用缓存的设置?是否有替代 RazorEngine 的替代方案?还是有其他方法可以从模板生成邮件?
【问题讨论】:
标签: c# .net razorengine