我正在编写一个辅助方法,它将在页面上生成评论的 HTML,并且我希望能够显示带有“< script >alert("hello");</script >”的评论作为它的内容。
使用时
@HttpUtility.HtmlDecode(comment.Content)
在 *.cshtml 文件中,该脚本将呈现为纯文本。
但是在视图中使用这个 HTML 助手时:
@Html.PendingComment(comment)
该脚本被呈现为 HTML 并被执行:
public static IHtmlString PendingComment(this HtmlHelper helper, VoidCommentPending comment)
{
var sb = new StringBuilder();
sb.Append("<p>" + HttpUtility.HtmlDecode(comment.Content) + "</p>");
return MvcHtmlString.Create(sb.ToString());
}
尝试使用“new HtmlString()”,结果相同,当我将返回结果从 IHtmlString 更改为字符串时,甚至段落标签都呈现为纯文本。
是否可以在 HtmlHelper 中混合编码和解码 HTML 字符串,还是应该使用不同的方法?