将简单数组发布到控制器

时间:2014-05-30 06:01:35

标签: jquery .net asp.net-mvc .net-4.5

向我的ints控制器发布MVC数组似乎会导致值为null

表单数据(已解析)表示数组中的每个元素都是单独发布的:

ids[]:39
ids[]:54

这似乎有意义,因为我读到表单数据只能作为键/值对发布。

我的控制器操作定义如下:

[HttpPost]
[Authorize]
public JSONResult SubmitApprovedUploadedPhotoIds(List<int> ids)
{
    try
    {
        if (ids == null)
            throw new ArgumentNullException("ids");

        // ...
    }
    // ...
}

我的ajax POST的主要部分:

// `ids` is an array of ints

$.ajax({

    url: "/MyController/SubmitApprovedUploadedPhotoIds",
    cache: false,
    data: 
        {
            ids: ids
        },
    dataType: "json",
    type: "POST",
});

我希望已发布的ID数组填充ids操作中的MVC变量。

我尝试将邮政编码更改为:

{
    ids: $(ids).serializeArray()
},

并尝试将我的MVC操作更改为:

public JSONResult SubmitApprovedUploadedPhotoIds(int[] ids)

没有成功。

1 个答案:

答案 0 :(得分:1)

要发送一份清单,我认为你必须让你的数据来自这个:

ids[]:39
ids[]:54

对此:

ids:39
ids:54

在您的ajax / post通话中,尝试添加traditional: true,以便摆脱[]

有关更多问题,请参阅此处:How to send a list of int with jQuery to ASP.net MVC Default Model Binder