ASP.NET 正文(布尔值)错误的 Web API 2 基元类型



我有一个动作

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

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

"消息": "请求无效。 "MessageDetail": "参数字典包含不可为空类型"System.Boolean"的参数"boolVariable"的空条目 方法 'System.Web.Http.IHttpActionResult foo(Int32, 布尔值('在"项目名称.控制器.名称控制器"中。一个可选的 参数必须是引用类型、可为 null 的类型或声明为 一个可选参数。

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

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

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

但是它困扰着我为什么它不绑定 json 主体中的变量?我在操作参数中指定 [FromBody]...

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

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

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

在"使用 [FromBody] 部分下阅读更多内容

相关内容

  • 没有找到相关文章

最新更新