MVC: сбросить значение модели после отправки Ajax.Beginform. - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть эта модель:

public class VehiculeModalViewModel
{
    public VehiculeModalViewModel()
    {
        Title = "Nouveau véhicule";
        TextToDisplay = "Nom du nouveau véhicule :";
    }
    [Display(Name = "Nom")]
    [Required]
    [StringLength(10)]
    [Remote("IsVehiculeExists", "Defaults", HttpMethod = "POST", ErrorMessage = "Ce véhicule existe déjà.")]
    public string Name { get; set; }
    public string Title { get; set; }
    public string TextToDisplay { get; set; }
}

И я использую частичное представление в качестве модальной формы (Вот только код привязки)

@model MultiRetouchesService.VehiculeModalViewModel
@Html.DisplayFor(m=>m.Title)
@Html.DisplayFor(m => m.TextToDisplay)
@Html.TextBoxFor(m => m.Name)

С основного вида I 'Использование помощника по формам Ajax.Begin для вызова метода контроллера и обновления другого частичного представления.

@using (Ajax.BeginForm("CreateNewVehicule", "Defaults", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "vehiculesList", InsertionMode = InsertionMode.Replace },new { Id = "vehiculeForm" }))
{
    @Html.AntiForgeryToken()
    Html.RenderPartial("_ModalForm", Model.VehiculeModalViewModel);
}

А вот метод контроллера (в основном, создайте транспортное средство и обновите другое частичное представление):

[HttpPost]
[ValidateAntiForgeryToken]
public PartialViewResult CreateNewVehicule(VehiculeModalViewModel vehicule)
{
    if (ModelState.IsValid)
    {
        Vehicule newVehicule =  _vehiculeService.CreateNewVehicule(vehicule.Name);
    }
    IEnumerable<Vehicule> allVehicules = _vehiculeService.GetAllVehicules();
    return PartialView("_VehiculesList", allVehicules);
}

Если модальный объект утвержден (на стороне клиента и удаленно), я создаю новое транспортное средство, а после этого закрываю модальную форму.Это то, что я хочу.

Но, если я снова открою модальное поле, поле Textbox по-прежнему содержит последний введенный name.

Как этого избежать?

После замечаний Стивена я добавил следующие строки:

$("#submitVehicule").click(function () {
    if ($('#vehiculeForm').valid()) {
        $('#closeVehicule').click();
        $('#vehiculeForm')[0].reset();
        var form = $('#vehiculeForm');
        form.data('validator', null);
        $.validator.unobtrusive.parse(form);
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...