【发布时间】:2019-02-27 18:27:42
【问题描述】:
在阅读了很多关于我现在犯的同样错误的主题后,我来到这里发帖。
我有一个在 GET 中工作但在 POST 中不工作的 WEB API。 当我使用 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"
}
来自 Postman 的完整代码:
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 中添加一个 =,对吗?
提前感谢您的帮助!
【问题讨论】:
-
可能正在尝试验证 ID,尝试发送 ID:0 或其他内容
-
正好ID是随DB自动递增的,我不想用JSON传输
-
但是你能用 Postman 测试一下,看看是不是这个问题吗?
-
1) 您是否调试并验证了为 emp 对象设置的属性。 2)使用邮递员您是否尝试过设置标题:ContentType >> application/json? 3) 在调试 ModelState 时应该告诉你为什么它失败了......
-
从 ModelState 中获取错误
标签: c# asp.net-web-api