在 Web api 2 的情况下,模型绑定不适用于 List<T> T
Model binding not working for List<T> T in case of Web api 2
我有一个带有 HTTP 动词的操作方法:POST 它接受来自正文的 List<Student>
学生对象作为操作方法的输入参数之一:
[Route("{Id:int}/save", Name = "SaveStudent")]
[HttpPost]
public IHttpActionResult AddStudent(int Id,[FromBody]List<Student> students)
{
return Ok<List<Student>>(students);
}
现在,当我尝试使用以下请求详细信息从 Fiddler 测试上述方法时:
{
"students": [
{
"name": "Test",
"rollno":空,
"totalmarks": 空
}
]
}
我收到 400 错误请求错误。
谁能帮我知道我到底错过了什么?
数组格式不正确,应该是这样的:
[{name: "Test", rollno: null, totalmarks: null }, {name: "Test2", rollno: null, totalmarks: null }]
在 C# 中使用的模型 class
public class Student {
public string Name { get; set; }
public int RollNo { get; set; }
public int TotalMarks { get; set; }
}
在 webapi 初始化期间添加了额外的 json 格式解析器。
config.MapHttpAttributeRoutes();
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
我希望这会帮助你现在开始工作
我有一个带有 HTTP 动词的操作方法:POST 它接受来自正文的 List<Student>
学生对象作为操作方法的输入参数之一:
[Route("{Id:int}/save", Name = "SaveStudent")]
[HttpPost]
public IHttpActionResult AddStudent(int Id,[FromBody]List<Student> students)
{
return Ok<List<Student>>(students);
}
现在,当我尝试使用以下请求详细信息从 Fiddler 测试上述方法时:
{ "students": [ { "name": "Test", "rollno":空, "totalmarks": 空 } ] }
我收到 400 错误请求错误。 谁能帮我知道我到底错过了什么?
数组格式不正确,应该是这样的:
[{name: "Test", rollno: null, totalmarks: null }, {name: "Test2", rollno: null, totalmarks: null }]
在 C# 中使用的模型 class
public class Student {
public string Name { get; set; }
public int RollNo { get; set; }
public int TotalMarks { get; set; }
}
在 webapi 初始化期间添加了额外的 json 格式解析器。
config.MapHttpAttributeRoutes();
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
我希望这会帮助你现在开始工作