我正在使用Web api 2和.net core 2.0
我正在尝试发布到端点,但是查询中的propertyId
始终为空,但是正文中的value
已填充。如果我将propertyId
更改为int
,则会填充它。
大量阅读后,我发现this,对我来说,它“确认”了我所做的应该是可行的。不是,所以我不知道我在想什么。关于这个问题有很多话题,但是没有一个对我有帮助。有人可以告诉我我所缺少的吗?
我尝试了多种变体,包括:
以上组合
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
邮递员脚本
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"]
}
]
答案 0 :(得分:0)
您需要做的就是这样命名[FromQuery]
属性
[FromQuery(Name = "propertyId")]
我最近一直在浏览.NET Core路由代码,似乎[FromQuery]
有时需要一些帮助,才能知道要映射哪些查询字符串。
编辑:哦,还要取消您的route属性,以便清楚地知道参数的来源。以及让您的请求使用实际的查询字符串,例如
?propertyId=testString
而不是使其成为路线上的ID。