为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
哆啦的时光机 2021-08-07 16:00:03
我正在使用简单的 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 操作有问题吗?请指教。
查看完整描述

3 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

尝试在您的 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调用之前在提交处理程序中获取表单的值(姓名、联系人编号、电子邮件...等),可能这就是它总是从第一次调用中获取值的原因。


查看完整回答
反对 回复 2021-08-07
?
jeck猫

TA贡献1909条经验 获得超7个赞

在您的控制器中,操作后试试这个:

 ModelState.Remove("ManualBookingForm ");


查看完整回答
反对 回复 2021-08-07
  • 3 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信