我正在使用剃刀,我很难将数组传递给控制器。数组包含我创建的对象,我正在尝试这样做:
$.ajax({
type: "POST",
url: "HomePage/HandleOperations",
data: JSON.stringify(operationCollection),
success: function (data) { alert("SUCESS");},
dataType: "json",
contentType: "application/json"
});
我的控制器是:
public void HandleOperations(List<string> operationCollection)
{
}
我不需要使用ajax,但我不确定它是怎么做的。在控制器中,它显示“operationCollection”包含元素,但它们都是空的。
答案 0 :(得分:11)
Ajax参数
traditional : true
会做到这一点。
答案 1 :(得分:3)
客户方:
$.ajax({
type: "POST",
url: "HomePage/HandleOperations",
data: {operations: operationCollection},
success: function (data) { alert("SUCCESS"); }
});
并声明类服务器端如下:
public class Operation
{
public int Index;
public string Source;
public string Target;
public int AddOrDel;
}
然后你可以采取这个行动:
public void HandleOperations(Operation[] operations)
{
}
答案 2 :(得分:3)
用于ajax调用的传统:true参数:
为了帮助radbyx,使用ajax调用的“traditional:true”属性,如下所示,将告诉ajax使用传统的序列化形式。更多细节:http://api.jquery.com/jQuery.param/ 或What is "traditional style of param serialization' in JQuery。
$.ajax({
type: "POST",
url: "HomePage/HandleOperations",
data: {operations: operationCollection},
traditional: true,
success: function (data) { alert("SUCCESS"); }
});
答案 3 :(得分:-1)
在ajax中添加“traditional:true”参数。
示例:
var parentValueToPush=new Array();
$('[name=SelectedUsers]:checked').each(function () {
parentValueToPush.push($(this).val());
temp.push($(this).val());
});
$.ajax({
url: //URL,
type: 'get',
traditional: true,
dataType: 'html',
cache: false,
data: { SelectedUsers: parentValueToPush},
success: function (data) {
//Result
}
});