Код: Выделить всё
error: function(xhr) {
const errors = xhr.responseJSON?.ModelState;
if (errors) {
for (const [key, value] of Object.entries(errors)) {
$(`#${key}`).after(`${value}`);
}
}
}
< /code>
Проблема: Структура вложенной модели (например, {"Учитель.hiredate": ["Недвигательная дата"]}) делает картирование поля грязным. < /p>
Упрощенный ответ API:
изменил API, чтобы вернуть ровный формат: < /li>
ol.return BadRequest(new {
Errors = ModelState.Values.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage)
});
< /code>
Плагин проверки jQuery: < /li>
< /ol>
$("#teacherForm").validate({
submitHandler: function(form) {
// AJAX submit
}
});
Что я ожидал
Чистый способ:
Извлекать поля-специфические ошибки из ModelState
Динамически отображать их в соответствии с соответствующими формами. Согласованность с стилями проверки Bootstrap < /p>
текущий код < /strong> < /p>
контроллер API: < /li>
< /ol>
Код: Выделить всё
[HttpPut]
[Route("api/teachers/{id}")]
public IHttpActionResult UpdateTeacher(int id, [FromBody] Teacher teacher)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState); // Returns error object
}
// ... update logic
}
< /code>
ajax call: < /li>
< /ol>
$.ajax({
url: `/api/teachers/${teacherId}`,
type: 'PUT',
contentType: 'application/json',
data: JSON.stringify(teacherData),
success: function() { /* ... */ },
error: function(xhr) {
// NEED HELP: Cleanly display errors here
}
});
Какой наиболее поддерживаемый способ отображения модельных ошибок для формирования полей? /> Есть ли библиотеки/плагины, которые упрощают этот рабочий процесс?>
Подробнее здесь: https://stackoverflow.com/questions/795 ... n-ajax-res