我想通过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 });
}
但是在Controller中Object被设置为null。
我的ViewModel是,
public class ItemViewModel
{
public long ID{get;set;}
public long MetaID{get;set;}
}
答案 0 :(得分:3)
尝试在ajax调用中添加内容类型
contentType : 'application/json',
默认情况下,ajax发送的内容类型为application/x-www-form-urlencoded; charset=UTF-8
修改强>
我也不知道这是一个错字,json.stringify
应该是JSON.stringify
希望这会有所帮助。
答案 1 :(得分:0)
$.ajax({
type: 'POST',
data: {"data":json.stringify(totaldata)},//You missed the format
traditional:true,
url: '/Builder/Save',
success: function () {
alert("Playlist saved successfully!!");
}
})
答案 2 :(得分:-2)
问题解决了我的申请现在正常运作。 我刚刚在数组元素上做了JSON.stringify()&amp;不是发布的整个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!!");
}
})