通过在jquery formdata中附加对象来传递对象列表

时间:2014-11-27 07:24:07

标签: c# jquery ajax asp.net-mvc-4 form-data

我遇到了MVC 4中的一个场景,我需要在ajax调用中发送一个图像以及对象列表。我如何在formData中附加它? 这是我的formdata和ajax调用

    var formdata = new FormData();
    var imgFile = document.getElementById('ProfilePic');
    var imgfileList = imgFile.files;
    formdata.append(imgfileList[0].name, imgfileList[0]);

    // Below Code is not workin
    formdata.append('Rent', $scope.RentTypes);
    // $scope.RentType = [{ id:1,price:5},{id:2,price:6}]

        $.ajax({
            url: url
            data: formdata,
            processData: false,
            contentType: false,
            type: 'POST'
        });

在控制器中,我从ajax调用调用的动作就像这样

  public ActionResult Upload(List<Rent> Rent)
{
}

Rent.cs

public class Rent
{
 public int id;
 public int price;
 public Available;
}

1 个答案:

答案 0 :(得分:6)

为了回发到集合,您需要使用索引器构建数据,以便它可以被DefaultModelBinder

绑定
....
formdata.append('[0].id', 1);
formdata.append('[0].price', 5);
formdata.append('[1].id', 2);
formdata.append('[1].price', 6);

$.ajax({
  url: url
  data: formdata,
  processData: false,
  contentType: false,
  type: 'POST'
});