- Насколько я понимаю, вы отправляете свою форму в действие контроллера как полный пост обратно. Вместо этого вам нужно отправить его как
ajax
сообщение, это даст вам гибкость при работе с ответом. - Я бы порекомендовал визуализировать ваш модал при начальной загрузке страницы, а затем работать только с
JSON
, когда получение результата от контроллера. Это исключит сложный логический анализ c ответа (выяснение, является ли это частичным представлением или чем-то еще для правильных дальнейших действий).
Так визуализируйте ваш частичный вид на главном виде (уберите Errors: @Model.ErrorList
из частичного вида и оставьте ярлык пустым, так как он вам больше не нужен):
@Html.Partial("_ErrorsModal")
Ваш действие контроллера, которое вернет Json
:
[HttpPost]
public IActionResult Daily(Daily dailyReport)
{
var dr = new ReportDaily();
var rc = new ReportDailyCriteria();
dr.Preview(rc, IntPtr.Zero, out Notification notification);
if (notification.HasErrors)
{
return Json(new
{
success = false,
message = notification.GetConcatenatedErrorMessage(Environment.NewLine + Environment.NewLine)
});
}
return Json(new { success = true });
}
И ваш ajax
вызов при отправке формы:
$.ajax({
type: 'POST',
data: JSON.stringify($('#your_form_id').serializeArray().reduce(function(m,o){ m[o.name] = o.value; return m;}, {})),
url: 'http://your_website/your_controller/Daily',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if(data.success){
//your actions when validation successful...
} else {
$('#errorsModal .modal-body label').html(data.message);
$('#errorsModal').modal('toggle');
}
}
});