繁体   English   中英

带有formData的Ajax不会在asp.net控制器中绑定子对象的对象数组

[英]Ajax with formData dose not bind child's array of objects in asp.net controller

嗨,我正在尝试使用表单数据在ajax调用中发送文件和某些对象

这是我的ajax电话

$.ajax({
   type: "POST",
   url: "/Post/SharePost",
   processData: false,
   contentType: false,
   headers: getAjaxHeaderWithToken(),
   dataType: "json",
   data: getDataToPost(),
});

这是我的getDataToPost()方法

function getDataToPost() {
    var dataToPost = new FormData();
    for (var i = 0; i < savedPictures.length; i++) {
        var savedPictureToPost = { PictureId: savedPictures[i].PictureId};
        dataToPost.append("vm.SavedPictures[" + i + "]", JSON.stringify( savedPictureToPost));
    }
}

这是我的控制器

[HttpPost]
[ValidateAntiForgeryTokenOnAllPosts]
public ActionResult SharePost(SharePostVM vm, IEnumerable<HttpPostedFileBase> unsavedPictures)
{

}

这是我的SharePostVM

public class SharePostVM : BasePostVM
{
    public SharePostCategories SharePostCategories { get; set; }

    [Required]
    public decimal? Price { get; set; }

    [Required]
    [Display(Name = "Available Date")]
    public string DateAvailableFrom { get; set; }

    public IEnumerable<PictureVM> SavedPictures { get; set; }
}

正如您在控制器中看到的那样,我也需要发送文件,但是我只是排除了使其变得简单的方法。 基本上,我需要发送带有对象数组的文件和对象。 我可以通过附加诸如dataToPost.append(“ vm”,“ priceValue”)之类的文件来绑定文件和SharePostVM的属性,例如price和DateAvailableFrom,但是我不能在SharePostVM中绑定SavedPictures。 如何绑定它们? 我知道我可以从服务器端的请求中检索,但是我只想知道是否可以绑定它们。 我也尝试过不使用JSON.stringfy(),但仍然无法正常工作。

多谢你们

尝试这样:

var pictureId = savedPictures[i].PictureId;
dataToPost.append("SavedPictures[" + i + "].PictureId", pictureId);
// ... and so on if you want to bind other properties than PictureId

同样在问题中显示的getDataToPost函数中,没有return语句,但我想这只是一个错字,在您的实际代码中,该函数返回一个值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM