2
こんにちは私はコントローラにデータを投稿するのに問題があります。今私は以下のモデルを持っていますAjax FormData追加リストオブジェクト
public class Media
{
public int Id { get; set; }
public string Category { get; set; }
public string Guid { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public List<int> Portals { get; set; }
public string Lang { get; set; }
public List<Folder> Folders { get; set; }
}
次に、ファイルとこのモデルをコントローラに投稿します。私はフォルダなしですべてのデータを取るビューAJAX側の
var formData = new FormData();
var totalFiles = document.getElementById("FileUpload").files.length;
if (totalFiles === 0) {
toastr.warning('Lütfen resim yükleyin.');
return;
}
for (var i = 0; i < totalFiles; i++) {
var file = document.getElementById("FileUpload").files[i];
formData.append("FileUpload", file);
}
var itemFolder= {
Id: refFolder
}
var folderss = [];
folderss.push(itemFolder);
var item = {
Title: title,
Description: desc,
Category: category,
Portals: portals,
Folders: folderss
}
formData.append("Title", title);
formData.append("Description", desc);
formData.append("Category", category);
formData.append("Portals", portals);
formData.append("Folders",folderss);
$.ajax({
type: 'POST',
url: '@Url.Action("Add", "Media")',
data: formData,
contentType: false,
processData: false,
success: function (data) {
var result = JSON.parse(data);
if (result.Status !== 200) {
toastr.error('@Resources.Resource.Error_Unexpected');
return;
}
if (result.Result === "SUCCEED") {
toastr.success('Resim kaydedilmiştir.');
window.location.reload();
return;
} else {
toastr.error('@Resources.Resource.Error_Unexpected');
}
},
error: function (error) {
toastr.error('@Resources.Resource.Error_Unexpected');
return;
}
});
と私は
public ActionResult Add(Models.Media item)
{
if (item == null
|| string.IsNullOrEmpty(item.Title)
|| string.IsNullOrEmpty(item.Category))
return Content(Serialization.JsonSerialize(new { Status = 400 }));
if (Request.Files.Count <= 0)
return Content(Serialization.JsonSerialize(new { Status = 401, Result = "NO_FILE" }));
return Content(Serialization.JsonSerialize(new { Status = 200, Result = MediaRepository.Add(item) }));
}
のようなコントローラでこのポストのデータを取るが、それはヌル来属性。どうすればこの問題を解決できますか? ありがとう
コレクションオブジェクトにはインデクサーが必要です。しかし、正しく表示されている場合は、 'var formdata = new FormData($( 'form').get(0));'をモデルに正しくシリアル化する必要があります。モデルをフォームデータに変換し、MVCで取得する](http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/ 29293681#29293681)) –