У меня есть модальный бутстрап, который позволяет пользователю обновлять некоторую информацию о своей учетной записи.На самом деле я хочу, чтобы модал оставался открытым при отправке формы, потому что, если пользователь отправит форму, модал по умолчанию будет закрыт обновлением страницы.
Для этого я добавил следующую форму внутри модального окна.:
@model Demo.ViewModels.UserProfileViewModel;
<form asp-controller="User" asp-action="UpdateUser" asp-antiforgery="true" id="userInformations">
<div class="form-group">
<label class="col-lg-3 control-label">Email</label>
<div class="col-lg-12">
<input class="form-control" type="text" asp-for="User.Email" value="@Model.User.Email" />
</div>
<div class="form-group">
<label class="col-lg-3 control-label">Password</label>
<div class="col-lg-12">
<input class="form-control" asp-for="User.??" type="password" value="?" />
</div>
</div>
<button type="submit">Update</button>
</div>
, где UserViewModel
- это объект, содержащий поля для обновления.
Для предотвращения модального закрытия я создал функцию javascript со следующим содержанием:
$('#userInformations').on("submit", function (event) {
event.preventDefault();
$.ajax({
url: "some url",
type: "POST",
data: some data,
success: function (result) {
console.log(result)
}
});
});
Я застрял в части ajax
, в частности мне нужно вызвать метод UpdateUser
, доступный в контроллере User
:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult UpdateUser(UserProfileViewModel updateUser)
{
if (ModelState.IsValid)
{
updateUser = _repo.UpdateUser(updateUser);
}
return RedirectToAction("Profile");
}
Основная проблема: у меня естья понятия не имел, как это сделать, и я на самом деле не нашел ничего связанного, поэтому я не знаю, возможно ли это, или, возможно, ситуация более проста, чем эта.
ОБНОВЛЕНИЕ
Как предлагалось:
$.ajax({
url: this.action,
type: "POST",
data: this.serialize,
success: function (result) {
alert(true);
console.log(result)
},
error: function (data) {
console.log(data);
}
});