api - ASP.NET Web API 2 主体类型( bool 值)错误

标签 api asp.net-web-api asp.net-web-api2 webapi2

我有一个行动

[HttpPatch]
public IHttpActionResult foo(int id, [FromBody]bool boolVariable)
{
 return Ok();
}

我仍在调试,当我尝试使用 Postman 发送一些数据时,我收到一个奇怪的错误

"Message": "The request is invalid.", "MessageDetail": "The parameters dictionary contains a null entry for parameter 'boolVariable' of non-nullable type 'System.Boolean' for method 'System.Web.Http.IHttpActionResult foo(Int32, Boolean)' in 'ProjectName.Controllers.NameController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."

问题是它没有将 boolVariable 与我的 json 主体绑定(bind)...是的,我可以使用绑定(bind)模型轻松解决问题

  public class FooBindModel
    {
        public bool boolVariable{ get; set; }
    }


public IHttpActionResult foo(int id, FooBindModel bindModel)
{
 return Ok();
}

但是它让我烦恼为什么它不绑定(bind) json 主体中的变量?我在操作参数中指定 [FromBody]...

最佳答案

这实际上是您确实需要使用经常被误用的 [FromBody] 属性的情况。 默认情况下,Web Api 会尝试将请求正文作为对象读取,这使得在处理对象时 [FromBody] 属性变得多余。

但是,当您的请求正文中有值类型时,您需要告诉 Web Api 您希望从正文中获取值类型,这就是 [FromBody] 所做的。

因此,要解决此问题,您应该指定 [FromBody] bool boolVariable 并仅在正文中发送 bool 值,即

true

Using [FromBody]下阅读更多内容部分

关于api - ASP.NET Web API 2 主体类型( bool 值)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45803421/

相关文章:

asp.net-mvc - 将 ninject 与 Ninject.Web.Api 用于 Web Api 2 一起使用在 ASP.NET MVC 5 中不起作用

c# - 有没有办法在异步方法中使用 out 参数?如果没有,谁能建议我如何从异步方法返回 OUT 参数?

javascript - 谷歌地图算法(Ajax、Tiles 等)

java - 如何解决 IBM Watson 中的 com.ibm.watson.developer_cloud.service.exception.NotFoundException?

ruby-on-rails - 如何使rails发布的cookie跨子域工作

Heroku 上的 JAVA RESTful 服务器 : allow the upload/reading of the SQLite database

c# - 如何实现网页的实时数据

asp.net-mvc - Web API 返回 csv 文件

asp.net - 对地方当局 claim 和外部供应商 claim 的混淆

angularjs - 将日期从 Angular 传递到 Web API 2 的正确方法