我正在使用C#和jQuery创建一个简单的MVC4应用程序。在此应用程序中,当用户按下id为SaveCheckboxChanges
的按钮时,我想通过ajax使用jQuery将两个数据数组发送到服务器。
然后由服务器读取这些数据数组并进行相应处理。
控制器方法:
[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方法没有提供信息?
答案 0 :(得分:1)
您可以尝试更改控制器方法参数,然后将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");
}
});
}
});
答案 1 :(得分:0)
不是在Controller中有两个字符串作为参数,而是可以让一个C#对象包含两个两个数组作为方法中的in参数。对象将自动由发布数据的值填充。类似的东西:
public class Something
{
public List<int> RequiresSetupArray {get;set;}
public List<int> DisabledArray {get;set;}
}