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

C# 如何在属性中使用查询参数?,c#,asp.net-core,query-parameters,mediatr,asp.net-core-routing,C#,Asp.net Core,Query Parameters,Mediatr,Asp.net Core Routing,我想在端点属性中使用查询参数,但不确定如何使用它们 我试过这个: [HttpPost("fooBar/{version}?amount={amount}&date={date}")] 但是我得到了这个错误: Microsoft.AspNetCore.Routing.Patterns.RoutePatternexException:文本部分“?amount=”无效。文字部分不能包含“?”字符。 位于Microsoft.AspNetCore.Routing.Patterns.RoutePa

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

我试过这个:

[HttpPost("fooBar/{version}?amount={amount}&date={date}")]
但是我得到了这个错误:

Microsoft.AspNetCore.Routing.Patterns.RoutePatternexException:文本部分“?amount=”无效。文字部分不能包含“?”字符。 位于Microsoft.AspNetCore.Routing.Patterns.RoutePatternParser.Parse(字符串模式)


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

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

//POST fooBar/v2?amount=1234&date=2020-01-06
[HttpPost("fooBar/{version}")]
public IActionResult FooBar(string version, int amount,  DateTime date) {
    //...
}
或者使用属性明确地说明它们的来源

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

参考

Simple:你没有。@John_\n那么正确的方法是什么?@Euridice01不要在路由模板中使用它们,一旦在操作中有匹配的参数,它们就会被包括进来。@Nkosi你能提供一个正确方法的示例吗?我还将MediatR与.net core一起使用。不确定这是否会改变什么。