Asp.net MVC , как вернуть модель в открытом модальном режиме, если не удалось сохранить

#jquery #asp.net-mvc

#jquery #asp.net-mvc

Вопрос:

На мой взгляд, у меня есть список, и у каждого элемента списка есть форма, которую он открывает в модальном режиме в моем проекте, операция сохранения формы работает полностью нормально, когда modelstate она действительна. но я хочу как-то реализовать, когда modelstate значение недействительно, тогда оно возвращается к тому же представлению с открытым модальным, что все входные данные содержат последние введенные пользователем данные.

это мое мнение

 @model iranholi.Models.TourRequestViewModel

 <ul>
    @foreach (var tour in Model.Tours)
    {
   <div class="col-md-3" id="inqcol">

     <div>

   @* THIS BUTTON OPENS MODAL *@
    <input data-id="@tour.Id" type="button" class="btn   get-by-ajax inq" value="INQUIRE" data-toggle="modal" data-target="#modalDate">
     </div>

     <div>
           <p>Cost:</p>
            @tour.Price $
     </div>

 @* HERE IS MY Modal,simplified  *@


     @using (Html.BeginForm("CreateR", "Tour"))
     {
       ....a form which it creates the request model
       <div class="form-group">

           <input type="submit" value="Submit" class="btn btn-default" />
      </div>
     }

 </div>

</ul>
}
 

это мой контроллер:

  [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult CreateR([Bind(Include = "Id,TourId,FirstName,LastName,Email,Phone,Comment,FrequentTraveler,TravelersCount,Date,ContactTimePreference,Country,Archived")] Request request)
    {

        if (ModelState.IsValid)
        {
            db.Requests.Add(request);
            db.SaveChanges();

            TempData["ResultMessage"] = "Form  Posted successfully.";
            return RedirectToAction("Index", "Tour", new { country = request.Country });
        }
        TempData["ResultMessage"] = "Try Again!";
        return RedirectToAction("Index", "Tour", new { country = request.Country });

    }
 

Как это возможно, если modelstate значение недопустимо, тогда оно возвращается к тому же представлению с открытым модальным, что все входные данные содержат последние введенные пользователем данные. Я знаю, что мне нужно использовать java-script и ajax, но понятия не имею, как.
Ценю любую помощь. Спасибо

упрощенный javascript здесь

  $(".inq").click(function () {

    $("#choosecount").css("display", "none");
    $("#list").html("");
    var numcount;

    var self = this;        
    $.post('/TourDates/GetByTour/'   $(self).data('id'), function (data) {

        for (var i = 0; i < data.length; i  ) {

            (function () {
                var date = data[i];
                $('<li/>').html(
                    '<div class="col-md-3 col-sm-3 col-xs-6">'   date.StartDate   '</div>'
                     
                    '<div class="col-md-3 col-sm-3 col-xs-5">'   date.Price   '

lt;/div>'

'<div class="col-md-4 col-sm-4 col-xs-1"></div>'
).appendTo('#list').addClass("container-fluid").click(function () {

//$("#shownum").html(parseInt(1));

numcount = 1;
$("#shownum").html(numcount);

$("#choosecount").css("display", "block");

$("#showdate").html(date.StartDate);

price = parseInt(date.Price);

$("#tpriceforall").html(date.Price "$");

});

})();
}
});
//here

$("#plus").click(function () {

numcount = numcount 1;

$("#shownum").html(numcount);

$("#tpriceforall").html((numcount * price) "$");

});

$("#minus").click(function () {
if (numcount > 1) {

numcount = numcount - 1;
$("#shownum").html(numcount);
$("#tpriceforall").html((price * numcount) "$");
}

});

});

введите описание изображения здесь

после следующей кнопки

введите описание изображения здесь

Комментарии:

1. Почему в мире у вас есть форма для каждого элемента в коллекции? (у вас должна быть только одна форма) И как вы открываете свой «модальный».

2. @StephenMuecke большое вам спасибо. Я обновляю свой код java-скрипта. существует список туров, которые, когда пользователь выбирает один из них, пользователь должен заполнить форму именно для этого тура, как вы думаете, мне нужно изменить его логически?

3. Логически это не имеет смысла. Ваш метод контроллера предполагает, что вы хотите перенаправить при отправке. Какой смысл создавать форму для каждого элемента в коллекции. Вы можете отправить только одну форму, поэтому вы сгенерировали кучу дополнительного HTML-кода ни за что (и при этом снизили производительность). Вы также можете отобразить коллекцию только с помощью ссылки «Редактировать», связанной с каждым элементом, и перенаправить на форму для редактирования этого элемента

4. да, спасибо, я думаю, что гораздо лучше использовать только одну форму. большое вам спасибо.