JSON数组张贴到MVC控制器

问题描述:

我想通过AJAX POST张贴JSON数组MVC控制器:JSON数组张贴到MVC控制器

$.ajax({ 
        type: 'POST', 
        data: json.stringify(totaldata), 
        traditional:true, 
        url: '/Builder/Save', 
        success: function() { 
         alert("Playlist saved successfully!!"); 
        } 
       }) 

和我的控制器代码取得一个视图模型&的阵列要更新这些值。

[HttpPost] 
    public ActionResult Save(IList<ItemEditViewModel> data,long playlistid=0, string Title="") 
    { 




     for (int i = 0; i < data.Count; i++) 
     { 
      var pc = db.PlaylistContents.FirstOrDefault(x => x.PlaylistContentId == data[i].ID); 
      if (pc == null) 
      { 
       pc = new PlaylistContent(); 
       db.PlaylistContents.Add(pc); 
      } 
      pc.ContentMetaDataId = data[i].MetaID; 
      pc.PlaylistContentSequenceId = i + 1; 
     } 

db.SaveChanges(); 
      return RedirectToAction("Playlist", new {ID=playlistid }); 

} 

但是,对象在Controller中设置为null。

我的视图模型是,

public class ItemViewModel 
{ 
    public long ID{get;set;} 
    public long MetaID{get;set;} 
} 

问题解决了&我的应用程序正在正常工作。 我刚刚完成JSON.stringify()数组元素&不是发布的整个ajax数据。

代码为下面写:

var totaldata = { data: data, playlistid: parseInt(playlistid), Title: Title }; 
       $.ajax({ 
        type: 'POST', 
        data: { data: JSON.stringify(data), playlistid: parseInt(playlistid), Title: Title, deleted: JSON.stringify(deleted) }, 
        traditional:true, 
        url: 'Save', 
        success: function (data) { 

         alert("Playlist saved successfully!!"); 

        } 
       }) 

$.ajax({ 
        type: 'POST', 
        data: {"data":json.stringify(totaldata)},//You missed the format 
        traditional:true, 
        url: '/Builder/Save', 
        success: function() { 
         alert("Playlist saved successfully!!"); 
        } 
       }) 
+0

它不是问题与格式化 – 2013-05-04 08:51:38

尝试增加在Ajax调用的内容类型,

contentType : 'application/json', 

默认情况下,Ajax和内容类型发送application/x-www-form-urlencoded; charset=UTF-8

编辑

也是我不知道它这是一个错字,json.stringifyJSON.stringify

希望这会有所帮助。