Я создаю веб-сайт, который содержит модальную форму авторизации.В случае сбоя входа в систему, я хочу показать сообщения проверки, как обычно, в форме ASP.NET Core.
Как я могу сделать это, используя ненавязчивый AJAX?Прямо сейчас я могу вызывать свои конкретные функции для успеха и неудачи, но я не знаю, что поместить внутрь, чтобы проверка работала.
Это мой текущий код:
Модальный логин:
<div class="modal" id="modalLogin" tabindex="-1" role="dialog" aria-labelledby="modalLoginLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form id="account" asp-controller="Account" asp-action="LoginModal" method="post" data-ajax="true" data-ajax-method="post" data-ajax-failure="onLoginFail">
<div class="modal-header">
<h5 class="modal-title" id="modalLoginLabel">@ViewData["Title"]</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<section>
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Username"></label>
<input asp-for="Username" class="form-control" />
<span asp-validation-for="Username" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Password"></label>
<input asp-for="Password" class="form-control" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<div class="checkbox">
<label asp-for="RememberMe">
<input asp-for="RememberMe" />
@Html.DisplayNameFor(m => m.RememberMe)
</label>
</div>
</div>
<div class="form-group">
<p class="text-center">
<a asp-controller="Account" asp-action="ForgotPassword">
@Localizer["ForgotPasswordLink"]
</a>
</p>
</div>
</section>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">@Localizer["LoginButton"]</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">@Localizer["CloseButton"]</button>
</div>
</form>
</div>
</div>
</div>
<script>
var onLoginFail = function (result) {
//I DON'T KNOW WHAT TO PUT IN HERE
};
</script>
Мои действия на контроллере:
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> LoginModal(LoginViewModel model, string returnUrl = null)
{
if (ModelState.IsValid)
{
var user = await _userManager.FindByNameAsync(model.Username);
if (user != null && !await _userManager.IsEmailConfirmedAsync(user))
{
ModelState.AddModelError("Login", "User not confirmed");
return BadRequest(ModelState);
}
var result = await _signInManager.PasswordSignInAsync(model.Username,
model.Password, model.RememberMe, lockoutOnFailure: true);
if (result.Succeeded)
{
if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
return Ok(returnUrl);
return RedirectToAction("Index", "Home");
}
ModelState.AddModelError("Login", "Incorrect credentials");
return BadRequest(model);
}
return BadRequest();
}
Заранее спасибо!