【问题标题】:Posting simple array to controller将简单数组发布到控制器
【发布时间】:2014-05-30 06:01:34
【问题描述】:

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 数组填充 MVC 操作中的 ids 变量。

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

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

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

public JSONResult SubmitApprovedUploadedPhotoIds(int[] ids)

没有成功。

【问题讨论】:

  • 显示完整的 ajax 调用
  • 你能告诉我们你的 ajax 调用吗?
  • @EhsanSajjad - 更新了我的问题

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 2012-04-17
    相关资源
    最近更新 更多