HTML 编码字符串 - ASP.NET Web 窗体 VS Razor 视图引擎

Posted

技术标签:

【中文标题】HTML 编码字符串 - ASP.NET Web 窗体 VS Razor 视图引擎【英文标题】:HTML Encoding Strings - ASP.NET Web Forms VS Razor View Engine 【发布时间】:2011-05-09 13:52:51 【问题描述】:

我还不太确定这是如何工作的……正在尝试查找文档。

在我现有的应用程序中,我有两种不同的方式在视图中呈现字符串

<%: model.something %>
<!-- or -->
<%= model.something %>

第一个是html编码的,第二个不是。

Razor 中是否有类似的简短内容?我只能找到这个,这是编码版本。

@model.something

【问题讨论】:

【参考方案1】:

我想最好的方法是使用 Raw 扩展方法:@Html.Raw(Model.Something)

【讨论】:

我收到了一封来自 Marcind 的电子邮件,说我们实际上应该使用它。【参考方案2】:

@Model.Something 自动进行 HTML 编码。如果您想避免 HTML 编码(并且只有在您完全确定自己在做什么的情况下才想要这样做),您可以使用 @MvcHtmlString.Create(Model.Something)(基本上所有实现 IHtmlString 的东西都不会被编码)。 Phil Haack blogged 关于 Razor 视图引擎语法。

【讨论】:

很酷,谢谢。你知道他们是否正在研究一种更短的语法来发送未编码的字符串吗?像@=Model.Something 这样的东西会很好。并不是说这是正确的方法,只是一些想法。 我们正在为 Razor v2 寻找类似的东西。 当它实现时我会欣喜若狂。事实上,如果能够在伙伴类中设置它,这样它就可以设置并忘记。 &lt;DisableHtmlEncode()&gt;@Html.EditorFor() +1 表示IHtmlString,但不是答案。我更喜欢@Magnus 的答案是@Html.Raw(Model.Something) 我刚收到 Marcind 的一封电子邮件,说我们实际上应该使用 @Html.Raw()

以上是关于HTML 编码字符串 - ASP.NET Web 窗体 VS Razor 视图引擎的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC Razor 无编码渲染

在 asp.net 中调用需要轮询的 Web 服务的最佳编码模式是啥?

ASP.NET Web 窗体中的输出编码安全问题

在 Asp.net 中使用 Ajax 发布 Multipart 和字符串内容 Web API

C# html转义

将 ASP.Net System.Net.Mail 设置移动到 Web.config