2016-08-23 61 views
2

我在HTML模板中呈现HTML时出现问题。我目前使用razorEngine填充模板,然后在电子邮件中使用。我在渲染时遇到的信息是一个url。由于客户要求,我们不能在电子邮件内部有可点击的链接,所以我必须将url作为纯字符串,但电子邮件客户端的问题在于,无论您将其定义为链接与否。为了避免这种情况,我在整个链接中添加了几个零空间图像来打破它。使用RazorEngine插入HTML以呈现为HTML模板

这是填充模板的代码:

Engine.Razor.Compile(content, "template"); 
Engine.Razor.Run("template", null, data) 

数据传入是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>" 
} 

标签在模板匹配用模板通常是这样的:

  • @ Model.FirstName
  • @ Model.LastName
  • @ Model.LastName

除了这我试图呈现为HTML的网址:

  • @Raw(Model.URL)

以下错误得到在尝试输入值时抛出:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:最好的重载方法匹配“RazorEngine.Templating.TemplateBase.Raw(字符串)”有一些无效参数

如果我是到URL直接放入生()是否能够正常工作:

@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>") 

任何人都可以看到我在这里错过了什么?

回答

3

Model.URL不是字符串。这可能是一个Newtonsoft.Json.Linq.JValue。您需要先将其转换为字符串:

@Raw(Model.URL.ToString()) 

只要小心并确保Model.URL不为空即可。