使用RazorEngine插入html以呈现为html填充模板
本文关键字:html 填充 RazorEngine 插入 使用 | 更新日期: 2023-09-27 18:03:48
我在html模板中呈现html有问题。我目前正在使用razorEngine填充模板,然后在电子邮件中使用。我有渲染问题的信息是一个url。因为客户端的要求,我们不能有可点击的电子邮件内的链接,所以我不得不有url作为一个普通的字符串,问题与电子邮件客户端是,他们会呈现一个url字符串作为一个链接,无论你是否将其定义为一个链接。为了避免这种情况,我在整个链接中添加了几个零空间图像来打破它。
这是填充模板的代码:
Engine.Razor.Compile(content, "template");
Engine.Razor.Run("template", null, data)
传入的数据是一个jobobject:
{
"Code": "235466",
"FirstName": "First",
"LastName": "Last",
"URL": "<p>http<img src='"'" width='"0'" height='"0'">s:<img src='"'" width='"0'" height='"0'">//test.<img src='"'" width='"0'" height='"0'">test.<img src='"'" width='"0'" height='"0'">com/account/forgotpassword/</p>"
}
模板中的标签通常像这样与模板匹配:
- @ model。FirstName
- @ model。LastName
- @ model。LastName
除了url,我试图渲染为html:
- @Raw (Model.URL)
尝试输入值时会抛出以下错误:
Microsoft.CSharp.RuntimeBinder。RuntimeBinderException: ' razorenengine . template . templatebase . raw (string)'的最佳重载方法匹配有一些无效参数
如果我将URL直接放入Raw()中,它可以正常工作:
@Raw("<p>http<img src="" width="0" height="0">s:<img src="" width="0" height="0">//test.<img src="" width="0" height="0">test.<img src="" width="0" height="0">com/account/forgotpassword/</p>")
有人能看到我在这里错过了什么吗?
Model.URL
不是字符串。可能是Newtonsoft.Json.Linq.JValue
。您需要首先使用
@Raw(Model.URL.ToString())
只是要小心,确保模型。
对@Raw()的调用需要一个IEncodedString而不是一个literal。
对于@Raw,请参见此处
对于IEncodedString,请参见此处