如何在属性中使用查询参数?
How do I use query parameters in attributes?
我想在端点属性中使用查询参数,但不确定如何使用它们。
我试过这个:
[HttpPost("fooBar/{version}?amount={amount}&date={date}")]
但是我得到了这个错误:
Microsoft.AspNetCore.Routing.Patterns.RoutePatternException: The literal section '?amount=' is invalid. Literal sections cannot contain the '?' character.
at Microsoft.AspNetCore.Routing.Patterns.RoutePatternParser.Parse(String pattern)
或者,如果我想访问与上面类似的端点,设置查询参数的正确方法是什么?
不要在路由模板中使用它们,一旦动作中有匹配的参数就会包含它们。
//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) {
//...
}
我想在端点属性中使用查询参数,但不确定如何使用它们。
我试过这个:
[HttpPost("fooBar/{version}?amount={amount}&date={date}")]
但是我得到了这个错误:
Microsoft.AspNetCore.Routing.Patterns.RoutePatternException: The literal section '?amount=' is invalid. Literal sections cannot contain the '?' character. at Microsoft.AspNetCore.Routing.Patterns.RoutePatternParser.Parse(String pattern)
或者,如果我想访问与上面类似的端点,设置查询参数的正确方法是什么?
不要在路由模板中使用它们,一旦动作中有匹配的参数就会包含它们。
//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) {
//...
}