C# 如何在Jquery中将对象数组传递给MVC控制器?
我试图将一组对象从js ajax发布到asp.net mvc控制器。但控制器参数始终为空。是否存在类型不匹配或其他问题 jsajaxC# 如何在Jquery中将对象数组传递给MVC控制器?,c#,asp.net,ajax,asp.net-mvc,C#,Asp.net,Ajax,Asp.net Mvc,我试图将一组对象从js ajax发布到asp.net mvc控制器。但控制器参数始终为空。是否存在类型不匹配或其他问题 jsajax var obj = {}; var arr = []; obj = { id: clicked.attr("name"), name: clicked.text().trim() } if (clicked.hasClass("active")) {
var obj = {};
var arr = [];
obj = {
id: clicked.attr("name"),
name: clicked.text().trim()
}
if (clicked.hasClass("active")) {
clicked.removeClass("active");
clickedCount--;
arr.pop(obj);
}
else {
clicked.addClass("active");
clickedCount++;
arr.push(obj);
}
$.ajax({
url: "/Players/Shuffle",
type: "POST",
data: JSON.stringify({ list: arr }),
contentType: "json",
success: function (data) {}
});
$.ajax({
url: "/Players/Shuffle",
type: "POST",
data: {list: JSON.stringify(arr)},
datatype: "json",
success: function (data) {}
});
控制器
[HttpPost]
public ActionResult Shuffle(List<player> list)
{
return RedirectToAction("Shuffled", new { l = list });
}
[HttpPost]
public ActionResult Shuffle(string list)
{
var js = new JavaScriptSerializer();
var deserializedList = (object[])js.DeserializeObject(list);
return RedirectToAction("Shuffled", new { l = deserializedList });
}
cshtml
@model List<Player>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@{
ViewBag.Title = "Shuffled";
}
<h1 id="test">
list: @ViewData["PlayerList"]
</h1>
@型号列表
@{
Layout=“~/Views/Shared/_Layout.cshtml”;
}
@{
ViewBag.Title=“洗牌”;
}
列表:@ViewData[“PlayerList”]
像这样更改您的代码,我认为它会起作用:
jsajax
var obj = {};
var arr = [];
obj = {
id: clicked.attr("name"),
name: clicked.text().trim()
}
if (clicked.hasClass("active")) {
clicked.removeClass("active");
clickedCount--;
arr.pop(obj);
}
else {
clicked.addClass("active");
clickedCount++;
arr.push(obj);
}
$.ajax({
url: "/Players/Shuffle",
type: "POST",
data: JSON.stringify({ list: arr }),
contentType: "json",
success: function (data) {}
});
$.ajax({
url: "/Players/Shuffle",
type: "POST",
data: {list: JSON.stringify(arr)},
datatype: "json",
success: function (data) {}
});
控制器
[HttpPost]
public ActionResult Shuffle(List<player> list)
{
return RedirectToAction("Shuffled", new { l = list });
}
[HttpPost]
public ActionResult Shuffle(string list)
{
var js = new JavaScriptSerializer();
var deserializedList = (object[])js.DeserializeObject(list);
return RedirectToAction("Shuffled", new { l = deserializedList });
}
data:JSON.stringify({list:arr}),
并添加contentType:'JSON'
,然后将参数更改为list
,其中T
是一个包含属性id
和name
(但是既然数组只包含一个对象,为什么要发布一个数组呢?)我必须用JSON传递它吗?我不能按原样发送它吗?除非您使用索引属性名-数据:{[0]。id:x[0]。name:y[1]。id:xx[1]。name:yy…}
在调试中,我看到列表再次为空,但当我运行它时,我在firebug中看到正确的post值。(这是我不理解的情况)。无论如何,我现在要更新这个问题。如果你在我的初始评论中使用代码,它将不会是null
。