Как сделать скрипт обновления и перенаправления для Ajax.BeginForm MVC - PullRequest
0 голосов
/ 06 января 2019

Я создал форму, используя 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 голосов
/ 06 января 2019

Если вы используете AJAX, форма не будет очищена автоматически, и вам нужно очистить ее. Вы можете установить значения входного текста и текстовых полей на ''. Также вам необходимо сбросить значения выбора.

Если предположить, что идентификатор формы равен CreatePlayer, то установить пустые значения входного текста и текста ('') -

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

Точно так же вы можете установить значение select на значение по умолчанию по вашему выбору. Предполагая, что выбор, который будет сброшен по первой опции, и идентификатор выбора - teamSel, затем для сброса значения -

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

Если в форму добавлена ​​кнопка сброса, вы можете инициировать сброс, но это не установит значения по умолчанию для входов формы. Для запуска сброса -

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

__ ОБНОВЛЕНИЕ ___

Вы должны вызывать их (в зависимости от ваших требований), в OnSuccess и / или OnFailure.

Вы должны очистить форму, когда вызов AJAX успешно завершится. Тем не менее, внутри OnSuccess очистите форму.

Вы должны показывать ошибки, если вызывается OnFailure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...