加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 控制器操作无法从JSON读取Guid POST

发布时间:2020-12-15 20:51:54 所属栏目:asp.Net 来源:网络整理
导读:我有一个Controller动作声明为: [Route("api/person")][HttpPost]public async TaskIActionResult Person([FromBody] Guid id) { ... } 我发帖到它: POST /api/person HTTP/1.1Host: localhost:5000Content-Type: application/jsonCache-Control: no-cache
我有一个Controller动作声明为:
[Route("api/person")]
[HttpPost]
public async Task<IActionResult> Person([FromBody] Guid id) { ... }

我发帖到它:

POST /api/person HTTP/1.1
Host: localhost:5000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 747a5d76-398c-e1c7-b948-b276bb24976c

{
    "id": "b85f75d8-e6f1-405d-90f4-530af8e060d5"
}

我的动作被击中,但它收到的Guid总是一个Guid.Empty值(即:它没有得到我传递的值).

请注意,如果我使用url参数而不是[FromBody],这可以正常工作,但我想使用http帖子的主体.

解决方法

如 Web API documentation中所述:

By default,Web API uses the following rules to bind parameters:

  • If the parameter is a “simple” type,Web API tries to get the value from the URI. Simple types include the .NET primitive types (int,
    bool,double,and so forth),plus TimeSpan,DateTime,Guid,decimal,
    and string,plus any type with a type converter that can convert from
    a string. (More about type converters later.)
  • For complex types,Web API tries to read the value from the message body,using a media-type formatter.

此外,在使用[FromBody]部分的同一篇文章中,您可以看到可以在参数上添加属性[FromBody]的示例,以便绑定请求正文中的值,就像您一样.但是这里是catch – 示例显示,在这种情况下,请求主体应该包含原始值,而不是JSON对象.

所以在你的情况下你有两个选择:

第一个选项是更改您的请求以提供原始值而不是JSON对象

POST /api/person HTTP/1.1
Host: localhost:5000
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 747a5d76-398c-e1c7-b948-b276bb24976c

"b85f75d8-e6f1-405d-90f4-530af8e060d5"

第二个选项是提供具有单个属性的复杂对象并将其用作参数:

public class Request
{
    public Guid Id { get; set; }
}

[Route("api/person")]
[HttpPost]
public async Task<IActionResult> Person([FromBody] Request request) { ... }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读