[英]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.