MVC的.cshtml视图中HTML标签字符串无法渲染为富文本如何解决?
问题原因
Razor视图引擎默认会对所有使用@语法输出的字符串内容做HTML转义处理,目的是避免XSS跨站脚本攻击。你虽然提前对内容做了HtmlDecode解码,但是解码后的<b>标签内容仍然会被Razor二次转义回<b>格式,所以页面最终展示的还是源码。
解决方法
- 使用
Html.Raw()方法包裹输出内容,该方法会告诉Razor不对当前内容做转义处理,直接输出原始HTML到页面。
调整后的代码如下:
<td>@Html.Raw(WebUtility.HtmlDecode(lookup.LookupTextDesc))</td>
- 注意事项:
Html.Raw()会跳过默认的XSS安全校验,仅在你完全确认待渲染的HTML内容是安全可控、不存在用户提交的恶意脚本内容时使用。如果内容包含用户可编辑的部分,需要先对内容做XSS过滤后再输出,避免出现安全漏洞。
内容的提问来源于stack exchange,提问作者misterraj
相关产品推荐
相关产品推荐

