如何解决如何用不同的参数名称注册路由?
这是一个非常简单的控制器,我将以它为例:
[ApiVersion("1.0")]
public class ExampleController : ControllerBase
{
[HttpGet]
[Ok(typeof(int))]
public IActionResult A([FromRoute] int number)
{
return Ok(number);
}
[HttpGet]
[Ok(typeof(bool))]
public IActionResult B([FromRoute] bool state)
{
return Ok(state);
}
}
在我的注册路线方法中,我说:
configureRoutes.MapRoute("1","{controller}/{action}/{number}",new {controller = "Example",action = "A"});
configureRoutes.MapRoute("2","{controller}/{action}/{state}",action = "B"});
但是问题是,虽然两个端点都可以路由到,但是只有第一个注册的路由才能正确检索参数。在这种情况下,state
将始终为false
。如果我先注册B
,则number
将始终是0
。
如果我将number
和state
更改为value
,则可以正常工作。是否可以在各自的路由模板中同时使用number
和state
,还是所有路由都必须具有相同的参数名称?如果每个名称都必须具有相同的名称,那么具有多个路由参数的端点将是什么样?
另外,我知道如果我不提这个,有人会建议的,我对属性路由不感兴趣。
解决方法
尝试将期望的类型添加到路线,即:
configureRoutes.MapRoute("1","{controller}/{action}/{number:int}",new {controller = "Example",action = "A"});
configureRoutes.MapRoute("2","{controller}/{action}/{state:bool}",action = "B"});
检查路线约束here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。