Создание класса для представления ошибок ModelState для отдельных свойств.
public class ValidationError
{
public string PropertyName = "";
public string[] ErrorList = null;
}
Создание метода, который возвращает список ошибок ValidationErrors на основе ModelState
public IEnumerable<ValidationError> GetModelStateErrors(ModelStateDictionary modelState)
{
var errors = (from m in modelState
where m.Value.Errors.Count() > 0
select
new ValidationError
{
PropertyName = m.Key,
ErrorList = (from msg in m.Value.Errors
select msg.ErrorMessage).ToArray()
})
.AsEnumerable();
return errors;
}
Затем в контроллере PostМетод do:
if (!ModelState.IsValid)
{
return Json(new
{
errors = true,
errorList = GetModelStateErrors(ModelState)
}, JsonRequestBehavior.AllowGet);
}
Вы можете создать JS-функции, которые перебирают список ошибок, возвращенный выше
$.ajax({
cache: false,
async: true,
type: "POST",
url: form.attr('action'),
data: form.serialize(),
success: function (data) {
if (data.errors) {
displayValidationErrors(data.errorList);
}
},
error: function (result) {
console.log("Error");
}
});
function displayValidationErrors(errors) {
$.each(errors, function (idx, validationError) {
$("span[data-valmsg-for='" + validationError.PropertyName + "']").text(validationError. ErrorList[0]);
});
}
В приведенном выше примере я получаю только первое сообщение об ошибке из ErrorList».Вы можете создать дополнительный цикл для получения всех сообщений и добавления их к вашему периоду проверки.