如何在AspNetCore中使用PreventDefault?

时间:2018-10-05 18:14:05

标签: asp.net asp.net-core

我有一个引导程序模式,该模式允许用户更新其帐户的某些信息。实际上,我想在提交表单时保持模式打开,因为如果用户提交表单,则默认的模式会被页面刷新关闭。

为此,我在模态中添加了以下形式:

@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);
        }
    });

1 个答案:

答案 0 :(得分:0)

您所拥有的一切都很好。对于URL,只需使用this.action。对于数据,请使用this.serialize()