Вы хотите, чтобы маршруты были определены наоборот, чтобы точное совпадение на create
предшествовало неограниченному совпадению для alertId
. Это, или вы можете добавить ограничение к alertId
, как указано в Twisty Maze.
Это потому, что маршрутизация работает, пытаясь сопоставить маршруты сверху вниз. /user/PureKrome/Alert/create
соответствует маршруту User-Alert-Details
, так как create
является значением для alertId
. При их переключении он будет совпадать с маршрутом User-Alert-Create
, только если 4-й сегмент явно равен create
, и будет падать до User-Alert-Details
, если не будет.
Для ясности, они должны работать следующим образом:
// GET: /user/PureKrome/Alert/create
routes.MapRoute(
"User-Alert-Create",
"user/{displayName}/alert/create",
new { controller = "Account", action = "AlertCreate" });
// GET: /user/PureKrome/Alert/69
routes.MapRoute(
"User-Alert-Details",
"user/{displayName}/alert/{alertId}",
new { controller = "Account", action = "AlertDetails", alertId = 0 });