c# 视图 输出html代码,关于C#:使用RazorEngine时,如何输出原始html(不是来自MVC)...

我正在尝试生成包含HTML内容的电子邮件。 该内容已经过卫生处理,因此在这方面我并不担心,但是当我致电:

Razor.Parse(template, model);

在以下Razor模板上:

@(new System.Web.HtmlString(Model.EmailContent))

输出的电子邮件经过HTM1编码,但我需要对其进行解码。 我该怎么做?

我回答了这个问题,但是由于我在这里回答了它,所以它被删除了,因为它是重复的回答:stackoverflow.com/questions/23603593/ ...这个答案对MVC和RazorEngine都适用。

与MVC的Razor View Engine一样,RazorEngine将自动对写入模板的值进行编码。为了解决这个问题,我们引入了一个名为IEncodedString的接口,默认实现为HtmlEncodedString和RawString。

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

@Raw(Model.EmailContent)

优秀的工作!谢谢

谢谢!你救了我的一天!

也拯救了我的一天!

@Matthew很抱歉要恢复,但是即使可以编译,它在VS HTML编辑器中看起来也不漂亮,它不再能够识别Model或Raw。任何解决方法?

@Jeff Im认为正确的方法是RazorEngine公开具有静态方法.Raw的静态类Html.cs,以便它将处理对Html.Raw的标准调用,这些调用可用于在VS Razor编辑器中获取正确的语法突出显示。

@Manfred @Raw()在RazorEngine中工作正常(不是ASP.NET MVC Razor;))

希望也解决这个问题。这将导致整个项目无法在启用MvcBuildViews的情况下进行构建...

" HtmlEncodedString"不起作用!而是使用:RawString。查看有效的示例!公共RazorEngine.Text.IEncodedString GetMarcaFinalDocumento(){返回新的RazorEngine.Text.RawString("嗨!");}

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

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

@ Html.Raw()不需要任何前期配置。好的解决方案。

我正在使用RazorEngine 3.8.2,@Raw(Model.Content)对于我来说工作正常。

如果您的模板具有自定义基类,则可以对Write方法进行编码,使其行为与常规MVC模板相似:如果输出值为IHtmlString,则不应对其进行编码。

这是我在TemplateBase类中使用的代码:

// Writes the results of expressions like:"@foo.Bar"

public virtual void Write(object value)

{

if (value is IHtmlString)

WriteLiteral(value);

else

WriteLiteral(AntiXssEncoder.HtmlEncode(value.ToString(), false));

}

// Writes literals like markup:"

Foo

public virtual void WriteLiteral(object value)

{

Buffer.Append(value);

}

为RazorEngine构建了包装器,增加了对@Html.Raw()和@Html.Partial()的支持

https://github.com/b9chris/RazorEngineComplete

我发现所有这些都与我合作。

@{var myHtmlString = new HtmlString(res);}

@myHtmlString

@MvcHtmlString.Create(res)

@Html.Raw(res)

您正在使用剃刀引擎无法提供的MVC库,因此这不是问题的答案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值