ModelState.AddModelError кодирует HTML - PullRequest
14 голосов
/ 07 апреля 2009

Я заметил странную проблему при использовании ModelState.AddModelError для проверки ввода в моих формах. Выходные данные из Html.ValidationMessage не являются истинным значением HTML, но представляют собой закодированное значение, поэтому стиль CSS не применяется к сообщению об ошибке.

Пример:

private string errorMessage = "<span class=\"negative\">{0}</span><br class=\"hid\" />";
ModelState.AddModelError("title", String.Format(errorMessage, "Tab title is required"));

Вывод отображается как:

<span class="field-validation-error">&lt;span class=&quot;negative&quot;&gt;URL is Required&lt;/span&gt;&lt;br class=&quot;hid&quot; /&gt;</span>

Это не имело место в случае с их более ранними бета-версиями, и я не уверен, какой подход выбрать здесь.

Спасибо Ник

Ответы [ 2 ]

14 голосов
/ 28 октября 2011

Есть и другой способ сделать это, не создавая собственного расширения.

Скажем, например, у нас есть следующее в одном из наших контроллеров:

ModelState.AddModelError("Name", "<b>Please Use a Valid Person Name</b>");

После этого мы можем сделать следующее:

@if(Html.ValidationMessageFor(x => x.Name) != null){
    @Html.Raw(Html.ValidationMessageFor(x => x.Name).ToString())
}

Запрет на кодирование сообщения об ошибке '<b>Please Use a Valid Person Name</b>'.

1 голос
/ 08 апреля 2009

Создайте свой собственный метод расширения, который имитирует Html.VallidationMessage ...?

Мне пришлось сделать нечто подобное, потому что встроенные средства проверки MVC (ModelState, ValidationMessage и т. Д. И т. Д.) Не обслуживают страницы, которые имеют более одной формы на странице.

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