Stringbuilder экранирует символы HTML - PullRequest
0 голосов
/ 13 июля 2011

У меня есть представление, которое строит раскрывающийся список на основе того, что отправлено из модели.

@{
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>"

Почему это происходит, и как я могу получить его, чтобы показать фактический выпадающий список?

1 Ответ

6 голосов
/ 13 июля 2011

вам нужен 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 отображается как есть.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...