如何为 Ajax.BeginForm MVC 刷新和重定向脚本

how make a script refresh and redirecting for Ajax.BeginForm MVC

我使用 Ajax.BeginForm

创建了一个表单
@using (Ajax.BeginForm("CreatePlayer", "Admin", null, new AjaxOptions() { HttpMethod = "post" }))
{
<div class="row">
    <div class="col-md-6">

        <div class="text-style-roboto form-group">
            <label>Имя</label>
            @Html.TextBoxFor(x => x.Name, new { @class = "form-control" })
            @Html.ValidationMessageFor(m => m.Name)
        </div>

        <div class="form-group">
            <button type="submit" class="button button-create">Добавить</button>
        </div>
    </div>
</div>
}

当我按下创建新播放器的按钮时,会创建一个播放器,但表格会保持填充状态。

,

期望的行为是应该清除表单,但事实并非如此。我不知道如何使用 jQuery 清除表格。我应该刷新页面,还是其他方式。

我在控制器中的 post 操作是 -

[HttpPost]
    public JsonResult CreatePlayer(CreatePlayerModel model, string TeamNameId)
    {
        if (ModelState.IsValid)
        {
            if (TeamNameId != string.Empty)
            {
                try
                {
                    int newTeamId = int.Parse(TeamNameId);
                    repository.CreatePlayer(model, newTeamId);
                    TempData["message"] = string.Format("Игрок {0} {1} сохранены", model.Name, model.Surname);

                    return new JsonResult()
                    {
                        JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                        Data = new { result = "success" }
                    };
                }
                catch (Exception exc)
                {
                    Console.WriteLine(exc.Message);
                }
            }
        }
        IEnumerable<SelectListItem> list = new SelectList(repository.Teams, "Id ", "Name");
        ViewBag.ChoosingTeam = list;
        return new JsonResult()
        {
            JsonRequestBehavior = JsonRequestBehavior.AllowGet,
            Data = new { result = "error" }
        };
    }

如果需要的话,我可以通过html的形式来完成Ajax的动作。

如果您使用AJAX,表格将不会自动清除,您需要清除它。您可以将输入文本和文本区域的值设置为 ''。此外,您需要重置 selects 的值。

假设表单 id 是 CreatePlayer 然后将输入文本和文本区域的值设置为空白 ('') -

$('#CreatePlayer').find("input[type=text], textarea").val('');

同样,您可以将select的值设置为您选择的默认值。假设第一个选项要重置的select,select的id是teamSel,那么要重置的值-

$("#teamSel").val($("#teamSel option:first").val());

如果您在表单中添加了重置按钮,您可以触发重置,但不会将默认值设置为表单输入。触发重置 -

$("#CreatePlayer").trigger('reset');

__更新___

您应该在 OnSuccess and/or OnFailure 中调用这些(取决于您的要求)。

当 AJAX 调用 returns 成功时,您应该清除表格。也就是说,在 OnSuccess 中清除表格。

如果调用 OnFailure,您应该会显示错误。