2009-07-02 2 views
2

В моем сценарии я хотел бы отобразить текст с URL-ссылкой в ​​сообщении проверки, прикрепленном к элементу формы в представлении MVC. Я использую метод расширения ValidationExtensions.ValidationMessage, например:Asp.Net MVC - ValidationMessage() - как предотвратить утечку HTML?

<%=Html.ValidationMessage(Model.Name) %> 

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

ответ

3

Я предполагаю, что с момента создания Html.ValidationMessage вы либо создадите ваша собственная версия, или если вы чувствуете себя творчески, так как она возвращает строку, назначьте ее, а затем unescape символы, которые вы хотите изменить.

string validation = Html.ValidationMessage(Model.Name); 
validation = Regex.Replace(validation, "&gt;", "<"); 
//etc... 
+0

Спасибо. Я создал метод расширения UnEscape() для строки - и теперь я могу использовать его всякий раз, когда мне нужно. –

3

Вы можете использовать HttpUtility.HtmlDecode (...) метод вместе с Html.ValidationMessage (...) метод, чтобы получить «сделано в заблуждение: D

+0

@ Html.Raw (HttpUtility.HtmlDecode (Html.ValidationMessageFor (x => x.Name) .ToHtmlString())); – George

Смежные вопросы