Несовершенная HTML-кодировка в ASP.NET MVC? - PullRequest
4 голосов
/ 14 февраля 2011

Я использую asp mvc 3. Когда я строю свои представления с использованием html-помощников по умолчанию, возникает проблема с html-кодированием в атрибутах тега: знак «больше чем» не кодируется. 1001 *

Итак, этот код

<%: Html.TextBox("TestText", "<Test>") %>

производит этот вывод

<input id="TestText" name="TestText" type="text" value="&lt;Test>" />

Есть ли причина, по которой атрибут-значение не полностью закодирован или это ошибка? Или есть ли способ использовать полную кодировку даже в атрибутах тегов?

Thanx, Michael

Ответы [ 2 ]

4 голосов
/ 14 февраля 2011

вы неправильно поняли тег <%:.Тег <%: кодирует только обычный string, а не HtmlString, как возвращается Html.TextBox helper.

Пример:

<%: Html.TextBox("TestText", "<Test>") %>
<%= Html.TextBox("TestText2", "<Test>") %>

Оба оператора возвращаюттакое же текстовое значение, как указано в вопросе.Теперь рассмотрим этот оператор.

<%: "<Test>" %>

Этот оператор кодирует, поскольку теперь передается обычная строка.

РЕДАКТИРОВАТЬ:

После проверки исходный код из MVC, HttpUtility.HtmlAttributeEncode вызывается под капотом.Он минимально преобразует строку в строку в кодировке HTML.

1 голос
/ 14 февраля 2011

"" кодируется в формате HTML.Символ «>» больше чем сам по себе безвреден, поэтому он не был преобразован в>

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