在阅读了许多有关我现在遇到的相同错误的主题之后,我来这里发表文章。
我有一个WEB API,它可以在GET中使用,而不能在POST中使用。 当我用POSTMAN向他发送JSON时,我在ModelState中收到一条错误消息,即ModelError ModelBinding
这是我的模型课:
[DataContract]
public class Employee
{
[DataMember]
public int ID { get; set; }
[DataMember(IsRequired = true)]
public string FirstName { get; set; }
[DataMember(IsRequired = true)]
public string LastName { get; set; }
}
这是我的API控制器的Post方法:
public IHttpActionResult Post([FromBody]Employee emp)
{
if (!ModelState.IsValid)
return BadRequest("Invalid data");
...
return Ok();
}
在此控制器中,我传入了if,并且它向我返回了“无效数据”
我尝试了一切,删除了模型中的[DataContract],但没有任何效果。
这是我发送的JSON的示例:
{
"FirstName" : "John",
"LastName" : "Malon"
}
邮递员的完整代码:
POST /api/employees HTTP/1.1
Host: localhost:49463
Content-Type: application/json
cache-control: no-cache
Postman-Token: 5ac38b20-425a-4ac7-995a-323fbd0bb9a5
{
"FirstName" : "John",
"LastName" : "Malon",
}------WebKitFormBoundary7MA4YWxkTrZu0gW--
编辑::看来我在Post方法中收到的emp对象为null
我看到了这篇文章:Post parameter is always null
但是英语不是我的主要语言,我无法弄清楚=
的解决方案
我了解我需要在发送的JSON中添加=,对吗?
提前感谢您的帮助!
答案 0 :(得分:0)
请确保您要从邮递员发送releases:
web-env:
version: new version
enabled: true
web-app:
enabled: true
version: 1.39.0
标头。否则,发布的代码不会出现任何问题。
答案 1 :(得分:0)
您正在定义一个包含不可为空的int
的类,但是您没有在POST正文中提供一个类。除非您为该属性提供值,否则这将始终无法通过验证。
如果您希望此操作成功,则可以-
选项1 -更改模型以接受空ID:
public class Employee
{
public int? ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
选项2 -在POST正文中提供默认值(但有效!)int
,一旦生成ID,则必须用数据库/后端代码替换:
{
"ID" : 0,
"FirstName" : "John",
"LastName" : "Malon"
}