我一直在寻找一段时间并且多次遇到过这个问题而且我在解决方案中做同样的事情但又困惑为什么它不起作用。 我确定这个问题会被标记为重复,但确实如此,但我遗漏了一些东西。
这是JavaScript对象数组
var gridData = {
tempData: [
{ UserName: "Tom", LastName: "Solomon" },
{ UserName: "Harry", LastName: "Solomon" },
{ UserName: "Sally", LastName: "Solomon" },
{ UserName: "Dick", LastName: "Solomon" },
]
};
这是我的Ajax
function TossIt() {
var sendThis = gridData.tempData;
console.log(sendThis);
$.ajax({
type: "POST",
url: "/Junk/JAT?s=" + sendThis,
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(sendThis),
success: function (data, textStatus, jqXHR) { },
complete: function (e) {
}
})
}
以下是我将其传递给
的方法[HttpPost]
public List<Stuff> JAT(Stuff s)
{
List<Stuff> result = new List<Stuff>();
return result;
}
这是班级
public class Stuff
{
public string UserName { get; set; }
public string LastName { get; set; }
}
我在JAT方法上有一个断点,s总是为空
修改 我需要操作对象中的一些属性然后返回列表
答案 0 :(得分:1)
您的代码存在许多问题
url: '/Junk/JAT',
或
最好是url: @Url.Action("JAT", "Junk");
,以确保
url是正确生成的(作为旁注,从一个绑定模型
查询字符串,它需要
/Junk/JAT?[0].UserName=Tom&[0].LastName=Solomon&[1].UserName=Harry&.....
)Stuff
的对象数组
POST方法中的参数也必须实现
IEnumerable<Stuff>
(不是一个Stuff
)dataType: "json",
)因此该方法必须返回JsonResult
。你的代码应该是
脚本
$.ajax({
type: "POST",
url: '@Url.Action("JAT", "Junk")',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ s: sendThis }),
success: function (data, textStatus, jqXHR) {
.... // do something with the data you return
},
complete: function (e) {
}
})
控制器
[HttpPost]
public JsonResult JAT(List<Stuff> s) // or ActionResult
{
.... // manipulate the collection as required
return Json(s);
}
答案 1 :(得分:0)
[HttpPost]
public List<Stuff> JAT([FromBody]List<Stuff> s)
{
List<Stuff> result = new List<Stuff>();
return result;
}
答案 2 :(得分:0)
上面使用POST
的答案是要走的路。但是,如果您想要GET
和queryStrings
,您也可以。
琐碎的例子:
客户端(见$.param()
)
var gridData = {
tempData: [
{ UserName: "Tom", LastName: "Solomon" },
{ UserName: "Harry", LastName: "Solomon" },
{ UserName: "Sally", LastName: "Solomon" },
{ UserName: "Dick", LastName: "Solomon" },
]
};
function TossIt() {
var sendThis = gridData.tempData;
console.log(sendThis);
$.ajax({
type: "GET",
url: "/JAT?" + $.param(gridData), //using $.param() here for query string
success: function(data, textStatus, jqXHR) {},
complete: function(e) {
}
});
}
Controller
方
List<Stuff>
HttpGet
属性将参数名称调整为tempData
(re:$.param()
)
[System.Web.Mvc.HttpGet]
public List<Stuff> JAT(List<Stuff> tempData)
{
......
}
... H个