使用ajax post将数组发布到MVC3控制器

时间:2012-11-29 00:45:45

标签: jquery asp.net-mvc asp.net-mvc-3 jquery-ui razor

如何使用jQuery Ajax post将一组元素发布到控制器动作。

这就是我的尝试方式,但是我的控制器收到一个空数组。

function dipatchAllocations() {
            // unSelected is an array of items of type int.
            if (unSelected.length == 0) {
                alert("Please select a line item to be dispatched.");
                return;
            }
            debugger;
            $.ajax({
                type: 'POST',
                url: '/Batch/SetToDispatch',
                data: '{ "allocationId[]" : "[' + unSelected + ']","batchId" : "' + @Model.Id + '" }',
                contentType: "application/json; charset=utf-8",
                traditional: true,
                success: updateView,
                error: errorInSubscribing
            });
        };

这是我的控制器

[HttpPost]
public ActionResult SetToDispatch(long[] allocationId,long batchId)
{   
  // Perform some action here
   return View("_ReadyToDispatchItems",model);
}

有人可以告诉我我错过了什么。

由于

3 个答案:

答案 0 :(得分:1)

试试这个:

var data = { allocationId : unSelected, batchId : @Model.Id };
$.ajax({
                type: 'POST',
                url: '/Batch/SetToDispatch',
                data: JSON.stringify(data),
                contentType: "application/json; charset=utf-8",
                traditional: true,
                success: updateView,
                error: errorInSubscribing
            });

答案 1 :(得分:0)

你的json语法似乎已关闭,在allocationId []之后不需要[] 请参阅:http://www.w3schools.com/json/json_syntax.asp 对于数组上的语法

答案 2 :(得分:0)

您可以简单地将数据作为查询字符串提供给控制器

 $.ajax({
            type: 'POST',
            url: '/Batch/SetToDispatch/' + unSelected + ',' + batchId
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            traditional: true,
            success: updateView,
            error: errorInSubscribing
        });

它的逗号分隔,您可以将其拆分为控制器并使用它。 希望它有所帮助