如何在属性中使用查询参数?

Eur*_*e01 3 c# query-parameters mediatr asp.net-core asp.net-core-routing

我想在我的端点属性中使用查询参数,但我不确定如何使用它们。

我试过这个:

[HttpPost("fooBar/{version}?amount={amount}&date={date}")]
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

Microsoft.AspNetCore.Routing.Patterns.RoutePatternException:文字部分“?amount=”无效。文字部分不能包含“?” 特点。在 Microsoft.AspNetCore.Routing.Patterns.RoutePatternParser.Parse(字符串模式)

或者,如果我想点击一个类似于上面的端点,那么设置查询参数的正确方法是什么?

Nko*_*osi 5

不要在路由模板中使用它们,一旦操作中有匹配的参数,它们就会被包含在内。

//POST fooBar/v2?amount=1234&date=2020-01-06
[HttpPost("fooBar/{version}")]
public IActionResult FooBar(string version, int amount,  DateTime date) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

或者使用属性明确说明它们来自哪里

//POST fooBar/v2?amount=1234&date=2020-01-06
[HttpPost("fooBar/{version}")]
public IActionResult FooBar([FromRoute]string version, [FromQuery]int amount,  [FromQuery]DateTime date) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

ASP.NET Core 中的参考模型绑定