控制器动作接收旧值作为 AJAX 调用的参数

我正在使用简单的 jquery 向 ASP.NET 中的 MVC Action 发送 Ajax 请求,它第一次运行良好,但在第一次调用之后,所有调用都倾向于接收 Action 上的第一个发布值。

当我尝试调试我的 JS 代码时,新值填充在那里,但在 Action 上,它们变回第一个值。

和我的 MVC 操作代码:


[OutputCache(Duration = 0, VaryByParam = "none")]

    public JsonResult InsertManualBookingForm(ManualBookingForm manualBookingForm)

    {


        this.ModelState.Clear();

        ModelState.Clear(); // force to use new model values


        String Result = String.Empty;

        this.ModelState.Clear();

        ModelState.Clear(); // force to use new model values



        try

        {

            string agentCardsSerialize = JsonConvert.SerializeObject(manualBookingForm);


        this.ModelState.Clear();

            ModelState.Clear(); // force to use new model values




            Result = Common.Common.ApiCall(Common.Common.APIEndpoint + "Home/InsertManualBookingForm", agentCardsSerialize);//Common.Common.ApiCall(URL_Request, commisionType,token);

            return Json(Result, JsonRequestBehavior.AllowGet);


        }

        catch (Exception ex)

        {


            throw;

        }

    }

如您所见,我什至尝试了清空缓存和清除模型状态的在线解决方案,但似乎没有任何解决方案有效。


我的 AJAX 调用或 MVC 操作有问题吗?请指教。


哆啦的时光机
浏览 197回答 3
3回答

慕的地10843

尝试在您的 ajax 调用中添加缓存:false  $.ajax({                            type: "POST",                            url: '/Home/InsertManualBookingForm',                            cache:false,                            data: {                                Name: name,                                ContactNo: contact,                                Email: email,                                BookingDateTime: bookingDate,                                PickUpLocation: pickupLocation,                                DropOffLocation: dropOffLocation,                                FlightNumber: flight,                                Passenger: passenger,                                Luggage: luggage,                                Message: message,                                Language: lang,                                HoursNeeded: hours,                                DaysNeeded: days                            },                            success: function (data) {                                swal("an email will be sent to you shortly", {                                    icon: "success",                                });                                //   document.getElementById("manualBooking").reset();                            }                        });让我们知道它是否有效PS:在ajax调用之前在提交处理程序中获取表单的值(姓名、联系人编号、电子邮件...等),可能这就是它总是从第一次调用中获取值的原因。

jeck猫

在您的控制器中,操作后试试这个: ModelState.Remove("ManualBookingForm ");
打开App,查看更多内容
随时随地看视频慕课网APP