我正在尝试在 Windows 服务主机中呈现电子邮件。
我使用由 coxp 分叉的 RazorEngine 3,它支持 Razor 2。 https://github.com/coxp/RazorEngine/tree/release-3.0/src
这适用于几个电子邮件模板,但有一个给我带来了问题。
@model string
<a href="@Model" target="_blank">Click here</a> to enter a new password for your account.
这会引发 CompilationException:名称“WriteAttribute”在当前上下文中不存在。因此,将字符串作为模型传入并将其放在 href 属性中会导致问题。
我可以通过以下方式更改此行来使其工作:
@Raw(string.Format("<a href=\"{0}\" target=\"_blank\">Klik hier</a>.", @Model))
但这使得模板非常不可读,并且更难传递给营销部门以进行进一步的样式设置。
我想补充一点,使用 Nuget 包引用 RazorEngine 不是解决方案,因为它基于 Razor 1,并且在进程的某个地方,system.web.razor 的 DLL 被版本 2 替换,这会破坏使用 RazorEngine 的任何代码。使用 Razor 2 从新功能中受益并保持最新似乎更有趣。
有关如何解决此问题的任何建议都会很棒。也非常欢迎分享您的经验。
更新 1
似乎调用 SetTemplateBaseType 可能会有所帮助,但是这个方法不再存在,所以我想知道如何能够绑定 templatebasetype?
//Missing method in the new RazorEngine build from coxp.
Razor.SetTemplateBaseType(typeof(HtmlTemplateBase<>));