Stringbuilder正在转义HTML符号

本文关键字:HTML 符号 转义 Stringbuilder | 更新日期: 2023-09-27 18:01:54

我有一个视图,它基于从模型发送的内容构建一个下拉列表。

@{
StringBuilder sb = new StringBuilder("<select id='"field"+Model.Id+"'">");
sb.Append("<option>Choose...</option>");
foreach(var s in Model.Choices)
{
    sb.Append("<option>" + s + "</option>");
}
sb.Append("</select>");
var str = sb.ToString();
}
$("#label" + "@Model.Id").html("@str");

但是在浏览器中,它不是创建一个下拉列表,而是输出整个字符串"<select id="field3"><option>Choose...</option><option>Movie</option><option>TV Show</option><option>Shorts</option></select>"

为什么它会这样做,我怎样才能让它显示实际的下拉列表?

Stringbuilder正在转义HTML符号

你需要的是HtmlString。

@{
StringBuilder sb = new StringBuilder("<select id='"field"+Model.Id+"'">");
sb.Append("<option>Choose...</option>");
foreach(var s in Model.Choices)
{
    sb.Append("<option>" + s + "</option>");
}
sb.Append("</select>");
var str = new HtmlString(sb.ToString());
}

字符串现在自动Html编码,如果他们是普通字符串,但一个HtmlString对象是呈现。