Пользовательский HTML-помощник MVC2 и синтаксис <%:%> - PullRequest
3 голосов
/ 07 сентября 2010

Есть ли способ использовать пользовательский помощник html с синтаксисом <%:%>?

Я знаю, что если я использую код ниже, это нормально, но это не так элегантно ибезопасный.

<%= Html.MyHelper("Some Data")%>

Я имею в виду, использовать <% =%>, это лучшие практики?

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

Пусть ваш помощник вернет MvcHtmlString вместо строки. Также, пожалуйста, используйте <%: как можно больше. </p>

0 голосов
/ 07 сентября 2010

Помощники HTML создают HTML, который, как правило, будет выводиться необработанным с <%= %>.Если вы использовали <%: %> для экранирования HTML от вывода помощника HTML, вы увидите исходный текст HTML, который он создал на странице, в виде текста (например, буквально <input name="foo" value="bar"> на экране), что, вероятно, не то, что вам нужно.

В целях безопасности помощник может HTML-экранировать любой текстовый контент внутри них.Да, если вы напишите пользовательский помощник HTML и поймете его неправильно - забыв об HTML-кодировании строк, ваш помощник вставит в вывод текстовое содержимое или значения атрибутов - у вас будут дыры в безопасности.Вам нужно знать, что вы делаете, пытаясь написать HTML-помощник.

Microsoft, к сожалению, по-видимому, этого не делает, поскольку самый первый пример в их учебнике полностью терпит неудачу:

return String.Format("<label for='{0}'>{1}</label>", target, text);

Упс.Надеюсь, что эти идентификаторы и текстовые строки не были получены из ненадежных данных!

[почему веб-учебники всегда так ужасно ужасны при выходе из проблем?]

...