У меня есть следующий код:
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"), но я бы предпочел не делать этого, поскольку хотел бы, чтобы все было просто.
Поэтому я ищу простой способ назначить несколько маршрутов одному методу, а затем определить, какое значение параметра действия в используемом пути маршрута было.