【发布时间】:2018-11-14 02:45:27
【问题描述】:
我有以下代码:
public IActionResult Up(int id)
{
return Move(id, "up");
}
private IActionResult Move(int id, string action)
{
// Do something based on the action
switch (action)
{
case "up":
break;
case "down":
break;
}
}
这很好用并且易于维护。但是现在我想我可以通过组合方法来重构代码:
[Route("item/up/{id}")]
[Route("item/down/{id}")]
public IActionResult Move([FromRoute]string action, [FromRoute]int id)
{
}
链接/item/up/155 将点击此方法,而链接/item/up2/155 按预期返回NotFound。
现在的问题是,当我检查action 的值时,它不包含值up,而是值Move。
这看起来很奇怪,因为控制器名称没有转换为ItemController。所以有人可能会争辩说该值应该是up。但是假设这是设计并且不会改变,那我怎么才能找到实际值呢?
我可以解析 Request.Path.Value (="/item/up/155"),但我不想这样做,因为我想让事情变得简单。
所以我正在寻找一种简单的方法来将多个路由分配给一个方法,然后确定使用的路由路径中的 action 参数的值是什么。
【问题讨论】:
标签: asp.net-core-mvc asp.net-core-routing