Я следую другому посту здесь на SO по этой теме, но я действительно не могу понять, как показать ошибку проверки в MVC
, используя Ajax
.Я делаю (используя Ajax.BeginForm
):
@using (Ajax.BeginForm("Login", "Account",
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "body",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "loadingOverlay",
OnComplete = "AjaxBeginFormOnComplete",
OnSuccess = "AjaxBeginFormOnSuccess",
OnFailure = "AjaxBeginFormOnFailure"
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.ValidationMessageFor(m => m.ErrorNotLogged);
<div class="row">
<div class="col-5 mx-auto">
<div class="card">
// input data and such
</div>
</div>
</div>
}
На контроллере я добавляю ModelState.AddModelError
:
public ActionResult Login(LoginViewModel model)
{
ModelState.AddModelError("ErrorNotLogged", "Error Message");
return PartialView(model);
}
Вот ViewMmodel:
public class LoginViewModel
{
[Display(Name = "Email", ResourceType = typeof(Resources.Customs))]
[Required(ErrorMessageResourceType = typeof(Resources.Customs), ErrorMessageResourceName = "RequiredEmail")]
[EmailAddress(ErrorMessageResourceType = typeof(Resources.Customs), ErrorMessageResourceName = "InvalidEmail")]
public string Email { get; set; }
[Display(Name = "Password", ResourceType = typeof(Resources.Customs))]
[DataType(DataType.Password)]
[Required(ErrorMessageResourceType = typeof(Resources.Customs), ErrorMessageResourceName = "RequiredPassword")]
public string Password { get; set; }
[Display(Name = "KeepMeLoggedIn", ResourceType = typeof(Resources.Customs))]
public bool KeepMeLoggedIn { get; set; }
public string ErrorNotLogged { get; set; }
}
Итак, мне нужно отобразить (после AJAX-запроса) (список) ошибок, сгенерированных с помощью AddModelError.
Это делает правильный Ajax-вызов.Но когда ответ завершен, я не вижу ни возвращенной ошибки, ни HTML, ничего!Где я не прав?
Пробовал разные аспекты, но ничего не работает:
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.ValidationSummary(false)
ModelState.AddModelError("", "Error Message");
return PartialView("Login", model);
[Required]
public string ErrorNotLogged { get; set; }
Должен ли я вызывать некоторую функцию JS на стороне клиента?Я все еще не вижу html, возвращенный с диапазоном и сообщением об ошибке, в любом случае ...