0

我想通过 AJAX POST 将 JSON 数组发布到 MVC 控制器:

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

并且我的控制器代码已经制作了一个 ViewModel 的数组并希望将这些值更新为。

[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 });

}

但是控制器中的对象设置为空。

我的 ViewModel 是这样的,

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

3 回答 3

3

尝试在 ajax 调用中添加内容类型,

contentType : 'application/json',

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

编辑

我也不知道这是一个错字,json.stringify应该是JSON.stringify

希望这可以帮助。

于 2013-05-04T11:58:17.380 回答
0
 $.ajax({
                    type: 'POST',
                    data: {"data":json.stringify(totaldata)},//You missed the format
                    traditional:true,
                    url: '/Builder/Save',
                    success: function () {
                        alert("Playlist saved successfully!!");
                    }
                })
于 2013-05-04T08:05:51.993 回答
-2

问题已解决,我的应用程序现在可以正常工作。我刚刚在数组元素上完成了 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!!");

                    }
                })
于 2013-05-07T06:17:08.303 回答