数组发送到mvc控制器
本文关键字:mvc 控制器 数组 | 更新日期: 2023-09-27 18:12:01
我想通过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。
My ViewModel is as,
public class ItemViewModel
{
public long ID{get;set;}
public long MetaID{get;set;}
}
尝试在ajax调用中添加内容类型,
contentType : 'application/json',
ajax默认发送内容类型为application/x-www-form-urlencoded; charset=UTF-8
编辑
我也不知道是不是打错了,json.stringify
应该是JSON.stringify
$.ajax({
type: 'POST',
data: {"data":json.stringify(totaldata)},//You missed the format
traditional:true,
url: '/Builder/Save',
success: function () {
alert("Playlist saved successfully!!");
}
})
问题解决了&我的应用程序现在工作正常。我刚刚用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!!");
}
})