【问题标题】:How to render HTML content coming from Model如何渲染来自模型的 HTML 内容
【发布时间】:2017-11-16 21:16:56
【问题描述】:

所以,我在 ASP.Net MVC 5 中有一个类似 wordpress 的网站,我可以在其中为我的客户创建网站。现在一个客户的网站需要一个文本框来添加一个 html 内容。因此,我为该文本框添加了[AllowHTML],因此我能够成功地将文本框内容保存到数据库。现在我的问题是如何在前端渲染。我的意思是我有一个模型属性作为

public string htmlcontent {get;set;}

我从数据库中得到的值是

<p>abc</p>.

现在在我的 cshtml 文件中呈现它的最佳方式是什么。如果我做类似的事情

@Model.htmlcontent

我的输出只是 <p>abc</p> 作为 Plain TEXT 但我希望 DOM 能够理解 html 内容和属性并相应地呈现它。

【问题讨论】:

  • 如果你允许每个人不仅可以输入 HTML,还可以输入 javascipt,然后在每个用户的机器上执行。请熟悉 XSS(跨站脚本):owasp.org/index.php/Cross-site_Scripting_(XSS)
  • 只有我可以作为管理员访问设置页面。所以基本上只有我可以登录到设置页面并根据客户的需求进行更改。
  • 但我会阅读这篇文章。谢谢。 :)

标签: html asp.net asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

你需要告诉剃须刀引擎不要使用Html.Raw转义你的字符串:

@Html.Raw(Model.htmlcontent)

【讨论】:

  • 你能解释一下为什么Raw 可以正常渲染,但没有raw 的正常渲染不起作用。
  • 默认情况下,所有通过 razor 输出的字符串都被转义/编码,例如 > 变为 >。通过使用Html.Raw,您告诉剃刀引擎不要转义输出中的任何字符,将其“原始”发送到浏览器。
猜你喜欢
  • 2017-11-08
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 2016-01-29
  • 2018-06-25
  • 2018-03-28
  • 2021-11-03
相关资源
最近更新 更多