我在HTML模板中呈现html时遇到问题。我目前正在使用razorEngine填充我们随后在电子邮件中使用的模板。我在渲染方面遇到的信息是一个URL。由于客户的要求,我们不能在电子邮件中包含可点击的链接,因此,我必须将url作为纯字符串,电子邮件客户端的问题在于,无论您将其定义为链接与否。为了避免这种情况,我在整个链接中添加了两个零空间图像来打破它。
这是填充模板的代码:
Engine.Razor.Compile(content, "template");
Engine.Razor.Run("template", null, data)
Run Code Online (Sandbox Code Playgroud)
传入的数据是一个JObject:
{
"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>"
}
Run Code Online (Sandbox Code Playgroud)
模板中的标签通常与模板匹配,如下所示:
除了我尝试呈现为html的网址:
尝试输入值时会引发以下错误:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:最佳重载方法匹配'RazorEngine.Templating.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>")
Run Code Online (Sandbox Code Playgroud)
谁能看到我在这里想念的东西?
Model.URL不是字符串。可能是一个Newtonsoft.Json.Linq.JValue。您首先需要使用以下命令将其转换为字符串:
@Raw(Model.URL.ToString())
Run Code Online (Sandbox Code Playgroud)
请注意并确保Model.URL不为null。