Я строю решение Asp.Net Core 2.0 MVC, используя луковую архитектуру.Я только что реализовал помощники тегов AJAX для частичного представления модальной формы POST. Это одна из статей, которые я нашел и за которыми следил. Сценарий «успеха» работает без каких-либо проблем.Моя основная проблема возникает, когда уровень бизнес-службы выдает недопустимое исключение операции .Это исключение перехватывается методом контроллера MVC, а затем добавляется в свойство модели представления с именем «ServiceError».Мой метод контроллера MVC возвращает частичное представление с полной моделью представления, которая включает сообщение об ошибке.DIV для сообщения об ошибке не показывает ошибку после возврата из метода контроллера MVC.Здесь появляется вторая проблема , помощники тегов AJAX не определяют это как сбой.Это все еще запускает "успех" JS-скрипт.Я сделал несколько поисков, но не могу найти пример или документы о том, как вернуть ошибки с контроллера MVC обратно в модальное состояние с помощью помощников тега AJAX?
Вот мой код тега формы:
<form class="m-form m-form--fit m-form--label-align-right"
id="formAddress" asp-action="Create" asp-controller="Address"
asp-area="Admin" data-ajax="true"
data-ajax-method="POST" data-ajax-complete="onComplete"
data-ajax-success="onSuccess"
data-ajax-failure="onFailed">
Это мой метод контроллера MVC:
[HttpPost]
[AutoValidateAntiforgeryToken]
public async Task<IActionResult> Create(ViewModel.AddressViewModel addressViewModel)
{
try
{
if (ModelState.IsValid)
{
var newId = await _addressServiceClient.CreateAddress(addressViewModel);
addressViewModel.Id = newId;
}
}
catch (System.InvalidOperationException ioex)
{
ModelState.AddModelError(nameof(ViewModel.AddressViewModel), ioex.Message);
addressViewModel.ServiceError = ioex.Message.ToString();
}
catch (System.Exception ex)
{
addressViewModel.ServiceError = ex.Message.ToString();
}
return PartialView("~/Areas/Shared/Views/_AddAddressPartial.cshtml", addressViewModel);
}
Вот div, который отображает свойство ошибки службы:
@if (Model.ServiceError != "")
{
<div class="alert alert-danger">@Model.ServiceError</div>
}
Согласно комментарию Стивена, я попыталсянижеприведенное изменение и его обновление ajax div у меня не установлено.