ページにコメントの 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 文字列のエンコードとデコードを混在させることは可能ですか、それとも別のアプローチを使用する必要がありますか?