Javascript Net内核中的模型绑定ajax请求
在我的项目中,我提出了如下ajax请求:Javascript Net内核中的模型绑定ajax请求,javascript,c#,ajax,asp.net-core-mvc,Javascript,C#,Ajax,Asp.net Core Mvc,在我的项目中,我提出了如下ajax请求: $(document).ready(function () { var friends = []; friends[0] = { Id: 1, Name: "John" }; friends[1] = { Id: 2, Name: "Mike" }; var obj = { Id: 1, Name: "Piotr", Friends: friends }
$(document).ready(function () {
var friends = [];
friends[0] = { Id: 1, Name: "John" };
friends[1] = { Id: 2, Name: "Mike" };
var obj = {
Id: 1,
Name: "Piotr",
Friends: friends
}
$.ajax({
contentType: 'application/json; charset=utf-8',
type: 'GET',
url: '/Home/Test',
data: obj
});
});
[HttpGet]
public IActionResult Test(Person p)
{
HttpRequest r = HttpContext.Request;
return Json(new
{
sEcho = "",
iTotalRecords = 2,
iTotalDisplayRecords = 2,
aaData = ""
});
}
我正在尝试将数据绑定到以下类:
public class Person
{
public long Id { get; set; }
public string Name { get; set; }
public IEnumerable<Friend> Friends { get; set; }
}
public class Friend
{
public long Id { get; set; }
public string Name { get; set; }
}
问题是,请求正在触发测试操作结果,但FRIENDS列表为空。数据未绑定到Person类的Friends属性
我做错了什么
请求查询字符串如下所示:
{?Id=1&Name=Piotr&Friends%5B0%5D%5BId%5D=1&Friends%5B0%5D%5BName%5D=John&Friends%5B1%5D%5D=2&Friends%5B1%5D%5BName%5D=Mike}
你能试试吗
$.ajax({
type: 'post',
dataType: 'json',
url: '/Home/Test',
data: obj
});
服务器端
[HttpPost]
public IActionResult Test(Person p)
你需要做几件事才能让它发挥作用 Javascript:
$(document).ready(function () {
var friends = [];
friends[0] = { id: 1, name: "John" };
friends[1] = { id: 2, name: "Mike" };
var obj = {
id: 1,
name: "Piotr",
friends: friends
}
$.ajax({
contentType: "application/json; charset=utf-8",
dataType: "application/json",
type: 'POST',
url: '/Home/Test',
//convert your data to a JSON object before you send it
data: JSON.stringify( obj)
});
});
ASPNET Core:属性[FromBody]
配置正确的输入格式化程序以解析发送的obj。对于JSON,ASPNET核心将使用JSON.NET库配置输入格式化程序
[HttpPost]
public IActionResult Test([FromBody]Person p)
{
return Json(new
{
sEcho = "",
iTotalRecords = 2,
iTotalDisplayRecords = 2,
aaData = ""
});
}
为什么要用HttpGet来做呢。请尝试HttpPost。当我将其更改为post时,所有Person p属性都为null或0;。