使用ajax Post后,控制器返回null

时间:2019-09-12 20:24:16

标签: javascript jquery ajax asp.net-mvc

我已经创建了一个ajax Post,其目标是我的控制器中称为edit的控制器中的action方法,但是我面临的问题是除了null以外,其他任何值都没有设置。

应该发生的是,在“ .save-user”按钮上单击时,它应该使用ID来获取值并将其存储到将在JSON.stringify方法中使用的局部变量中。

我对ajax和jquery还是陌生的,因此将不胜感激任何帮助或指导。

我的提交按钮:

@using(Html.BeginForm("Edit", "LansingMileage", FormMethod.Post))
                {
                    <button class="save-user edit-mode" type="submit"name="Save">Save</button>
                }

我的JQuery / Ajax:

 $('.save-user').on('.click', function saveClick() {


                var expense = $("#expense").val();
                var travel = $("#travel").val();
                var trip = $("#trip").val();
                var newRecords = jQuery.makeArray(expense, travel,trip);

                var dataToPost = JSON.stringify({ methodParam: newRecords });

                $.ajax({
                    type: "POST",
                    url: "/LansingMileage/Edit",
                    contentType: "application/json; charset=utf-8",
                    datatype: 'JSON',
                    data: dataToPost,
                    traditional: true
                });

控制器:

public ActionResult Edit([Bind(Include = "ExpMonthYr,TripType,TravelDate")]List<LansingMileage> methodParam)
        {


            if (ModelState.IsValid)
            {
                    try
                    {
                        db.Entry(methodParam).State = System.Data.Entity.EntityState.Modified;
                        db.SaveChanges();
                    }
                    catch (Exception ex)
                    {

                    }
                return RedirectToAction("Index");
            }

            return View(methodParam);
        }

1 个答案:

答案 0 :(得分:1)

编辑:首先,您需要确定newRecords变量的构造方式。我认为问题在于您对jquery.makeArray的使用。尝试使用Javascript创建一个对象,该对象的键与C#对象的属性匹配。给它适当的值,然后将该对象推入数组。

这应该可以解决您的问题,因为现在您的控制器正在等待一个列表(使用javascript数组)。

您传递给stringify方法的是一个对象,该对象的键值为数组,而您应该对数组进行字符串化或发送以使其与控制器参数匹配。