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

时间:2019-01-06 11:41:09

标签: c# jquery asp.net-mvc asp.net-ajax

我使用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>
}

当我按下按钮制作一个新的播放器时,会创建一个播放器,但表格仍会保留。

enter image description here

所需的行为是应清除表单,但不清除。我不怎么用jQuery清除表格。我应该刷新页面还是其他方式。

我在控制器中的发布操作为-

[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进行操作。

1 个答案:

答案 0 :(得分:0)

如果您使用的是AJAX,则不会自动清除该表单,您需要清除它。您可以将输入文本和文本区域的值设置为''。另外,您需要重置选择的值。

假设表单ID为CreatePlayer,然后将输入文本和textarea的值设置为空白('')-

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

类似地,您可以将select的值设置为您选择的默认值。假设要通过第一个选项重置的选择和选择的ID为teamSel,则重置值-

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

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

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

__更新___

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

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

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