gpt4 book ai didi

asp.net-web-api2 - 使用值 (FromBody) 发布时,Web Api 字符串参数 (fromQuery) 始终为 null

转载 作者:行者123 更新时间:2023-12-05 06:31:42 24 4
gpt4 key购买 nike

我正在使用 web api 2 和 .net core 2.0

我正在尝试发布到端点,但查询中的 propertyId 始终为 null,但正文中的 value 已填充。如果我将 propertyId 更改为 int,它就会被填充。

经过大量阅读,我找到了 this ,它“证实”了——对我来说——我所做的应该是有效的。不是这样我不知道我错过了什么。关于这个问题有很多线索,但没有一个对我有帮助。有人可以告诉我我缺少什么吗?

我尝试了多种变体,包括:

  • 将查询作为 ?propertyId=teststring 传递
  • 删除 [FromQuery]
  • 移除路线
  • 更改标题
  • 上述组合

    public class RoomsController : ControllerBase
    {
    ...other stuff...

    [HttpPost, Route("{propertyId}")]
    public async Task<IActionResult> Post([FromQuery]string propertyId, [FromBody]List<CreateRoomRequestDto> value)
    {
    List<Guid> result = await _mediator.Send(new NewRoomRequest() { PropertyId = propertyId, NewRoom = value });
    return Ok(result);
    }
    }

http://localhost:49942/api/Rooms/testString

postman 脚本

POST /api/Rooms/testString HTTP/1.1
Host: localhost:49942
Cache-Control: no-cache
Content-Type: application/json
Postman-Token: f15b569d-84a2-4bde-bdf0-b1cdf3fff975

[
{
"Tag":"30dd879c-ee2f-11db-8314-0800200c9a66",
"Name":"testName",
"Description": "tesDescription",
"Length": 1.5,
"Width": 1.8,
"Dimension": 5,
"DimensionText": "some DimensionText test",
"PhotoUrls": ["klklkl", "oioioioii"]
},
{
"Tag":"30dd879c-ee2f-11db-8314-0800200c9a66",
"Name":"testName2",
"Description": "tesDescription2",
"Length": 1.2,
"Width": 1.9,
"Dimension": 5,
"DimensionText": "some DimensionText test2",
"PhotoUrls": ["klklklwewe", "oioioioiinmnmnm"]
}
]

最佳答案

你需要做的是像这样命名 [FromQuery] 属性

[FromQuery(Name = "propertyId")]

我最近一直在查看 .NET Core 路由代码,似乎 [FromQuery] 只是不时需要一些帮助,以了解要映射查询字符串的哪些部分来自。

编辑:哦,还要关闭您的路由属性,以便清楚参数的来源。以及让您的请求使用实际的查询字符串,例如

?propertyId=testString 而不是使其成为路线上的 ID。

关于asp.net-web-api2 - 使用值 (FromBody) 发布时,Web Api 字符串参数 (fromQuery) 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51680397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com