将数据从ajax函数传递到mvc4方法



我正在用C#和jQuery制作一个简单的MVC4应用程序。在这个应用程序中,当用户按下id为SaveCheckboxChanges的按钮时,我想使用jQuery通过ajax向服务器发送两个数据数组。

这些数据阵列然后由服务器读取并相应地进行处理。

控制器方法:

[HttpPost]
public ActionResult UpdateCheckBoxes(string requiresSetupArray, string disabledArray){
    return Json("chamara", JsonRequestBehavior.AllowGet);
}

Javascript jQuery代码:

$("#SaveCheckboxChanges").click(function (event) {
            if (!$("#SaveCheckboxChanges").hasClass("disabled")) {
                var requiresSetupArray = [0, 1, 2];
                var disabledArray = [4, 5, 6];
                $.ajax({
                    url: '/Material/UpdateCheckBoxes',
                    type: 'POST',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify({requiresSetupArray: requiresSetupArray, disabledArray: disabledArray }),
                    success: function (data) {
                        alert("Success ")
                    },
                    error: function () {
                        alert("error");
                    }
                });
            }
        });

到目前为止的问题是,即使控制器中的方法被正确调用,参数也总是为null!我错过了什么?为什么我的Ajax方法不能传递信息?

您可以尝试更改控制器方法参数,然后将AJAX传统参数设置为true:

[HttpPost]
public ActionResult UpdateCheckBoxes(int[] requiresSetupArray, int[] disabledArray){
    return Json("chamara", JsonRequestBehavior.AllowGet);
}

Javascript

$("#SaveCheckboxChanges").click(function (event) {
     event.preventDefault();
     if (!$("#SaveCheckboxChanges").hasClass("disabled")) {
         var requiresSetupArray = [0, 1, 2];
         var disabledArray = [4, 5, 6];
         $.ajax({
             url: '/Material/UpdateCheckBoxes',
             type: 'POST',
             contentType: 'application/json; charset=utf-8',
             dataType: 'json',
             traditional: true,
             data: JSON.stringify({
                requiresSetupArray: requiresSetupArray, 
                disabledArray: disabledArray 
             }),
             success: function (data) {
                alert("Success " + checkBoxesNumber)
             },
             error: function () {
                alert("error");
             }
        });
    }
});

不需要在Controller中有两个字符串作为参数,而是可以在方法中有一个包含两个两个数组的C#对象作为in参数。对象将自动由发布数据的值填充。类似于:

public class Something
{
    public List<int> RequiresSetupArray {get;set;}
    public List<int> DisabledArray {get;set;}
}

最新更新