ModelState.AddModelError кодирует HTML
Я замечаю странную проблему при использовании 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"><span class="negative">URL is Required</span><br class="hid" /></span>
Это не так, как раньше, с их более ранней бета-версией, и я не уверен, какой подход здесь принять.
Спасибо
Ник
Ответы
Ответ 1
Есть и другой способ сделать это, не создавая собственного расширения.
Скажем, например, в одном из наших контроллеров мы имеем следующее:
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>'
.
Ответ 2
Создайте свой собственный метод расширения, который имитирует Html.VallidationMessage...?
Мне нужно было сделать что-то подобное, потому что встроенный материал проверки MVC (ModelState, ValidationMessage и т.д. и т.д.) не обслуживает страницы, на которых есть более одной формы на странице.