Я хотел бы настроить маршрут для контроллера, который выполняет обычные операции CRUD, но хотел бы, чтобы действие Details не показывало «Details» в URL. Stackoverflow, кажется, настроил этот тип маршрутизации:
http://stackoverflow.com/questions/999999/
http://stackoverflow.com/questions/ask
Используя эту аналогию, мои маршруты в настоящее время выглядят так:
http://stackoverflow.com/questions/Details/999999/
Добавив следующий маршрут, я смог удалить Details
:
routes.MapRoute("Q1", "questions/{id}",
new { controller = "Questions", action = "Details" });
Однако выполнение других действий на контроллере (например, /questions/new
для этого примера) жалуется на то, что идентификатор не может быть проанализирован.
Есть ли способ настроить маршруты, чтобы мне не приходилось вручную вводить все остальные действия (MapRoute "items / create", "items / delete" и т. Д.) В Global.asax вручную. CS? По сути, я хотел бы иметь второй маршрут, как:
routes.MapRoute("Q2", "questions/{action}",
new { controller = "Questions", action = "Index" });
... и механизм маршрутизации использует маршрут Q1, если {id}
соответствует целому числу, и {action}
, если это строка. Это возможно?