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