2

我正在使用剃须刀,我很难将数组传递给控制器​​。该数组包含我制作的对象,我正在尝试这样做:

$.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”包含元素,但它们都是空的。

4

4 回答 4

11

Ajax 参数

traditional : true

会成功的。

于 2013-09-22T15:10:04.377 回答
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)
{
}
于 2013-08-07T20:40:52.303 回答
3

ajax 调用的传统:true 参数的用法:

为了帮助 radbyx,使用 ajax 调用的“traditional:true”属性,如下所示,将告诉 ajax 使用传统形式的序列化。更多详细信息:http ://api.jquery.com/jQuery.param/ 或JQuery 中的“参数序列化的传统样式”是什么

$.ajax({
     type: "POST",
     url: "HomePage/HandleOperations",
     data: {operations: operationCollection},
     traditional: true,
     success: function (data) { alert("SUCCESS"); }
});
于 2013-12-20T20:21:51.547 回答
-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
            }
        });
于 2016-05-03T12:28:50.527 回答