簡體   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