如何在使用RazorEngine时输出原始html(不是来自MVC)

Kal*_*exx 98 c# html-encode razor

我正在尝试使用HTML内容生成电子邮件.这个内容已经经过了环境卫生,所以我并不担心这方面,但是当我打电话时:

Razor.Parse(template, model);
Run Code Online (Sandbox Code Playgroud)

在以下Razor模板上:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <body>
        @(new System.Web.HtmlString(Model.EmailContent))
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

输出的电子邮件是HTMl编码的,但我需要它解码.我怎么能做到这一点?

Mat*_*ott 171

与MVC的Razor View Engine一样,RazorEngine会自动编码写入模板的值.为了解决这个问题,我们引入了一个名为的接口IEncodedString,默认实现为HtmlEncodedStringRawString.

要使用后者,只需调用以下内置Raw方法TemplateBase:

@Raw(Model.EmailContent)
Run Code Online (Sandbox Code Playgroud)

  • @Manfred @Raw()在RazorEngine中工作正常(不是ASP.NET MVC的Razor;)) (8认同)
  • @Jeff我认为正确的方法是让RazorEngine公开一个静态类Html.cs,它有一个静态方法.Raw,这样它就可以处理对Html.Raw的标准调用,可以用来在VS Razor中获得正确的语法高亮编辑. (5认同)
  • @Matthew很抱歉恢复,但即使这个编译,它在VS HTML编辑器中看起来并不漂亮,它不会再识别Model或Raw.任何解决方法? (4认同)
  • "HtmlEncodedString"不起作用!而是使用:RawString.看一个有效的例子!public RazorEngine.Text.IEncodedString GetMarcaFinalDocumento(){return new RazorEngine.Text.RawString("<div> Hi there!</ div>");} (2认同)

Tod*_*son 12

仅供参考我有一个包含@ Html.Raw(...)语法的fork:

https://github.com/Antaris/RazorEngine/pull/105

  • @Html.Raw() 不需要预先配置。很好的解决方案。 (3认同)

cur*_*ter 5

我正在使用 RazorEngine 3.8.2 并且@Raw(Model.Content)对我来说工作得很好。