Я посмотрел на маршрутизацию на StackOverflow, и я имею очень noobie вопрос, но что-то я хотел бы разъяснение тем не менее.
Я конкретно смотрю на Пользовательский контроллер
https://stackoverflow.com/Users
https://stackoverflow.com/Users/Login
https://stackoverflow.com/Users/124069/rockinthesixstring
То, что я замечаю, - то, что существует "Пользовательский" контроллер, вероятно, с "Индексным" действием по умолчанию и действием "Входа в систему". Проблема, с которой я сталкиваюсь, состоит в том, что действие входа в систему может быть проигнорировано и "UrlParameter. Дополнительный [идентификатор]" может также использоваться.
Как точно это смотрит в наборе RegisterRoutes? Или я пропускаю что-то полностью очевидное?
Править: Вот маршрут, который я в настоящее время имею.. но это определенно далеко от права.
routes.MapRoute( _
"Default", _
"{controller}/{id}/{slug}", _
New With {.controller = "Events", .action = "Index", .id = UrlParameter.Optional, .slug = UrlParameter.Optional} _
)
Возможно, просто используется определенный маршрут для обработки этого, также используется regex для указания формата ID (чтобы не путаться с другими маршрутами, которые содержат имена действий в этой позиции).
// one route for details
routes.MapRoute("UserProfile",
"Users/{id}/{slug}",
new { controller = "Users", action = "Details", slug = string.Empty },
new { id = @"\d+" }
);
// one route for everything else
routes.MapRoute("Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional}
);
Без разработчика SO, дающего определенный ответ, обратная разработка может дать множество возможных комбинаций и перестановок. Вот одна из них, которая, как мне кажется, подходит:
routes.MapRoute(
"UserProfile",
"Users/{id}/{slug}",
new { controller = "Users", action = "Profile" }
);
routes.MapRoute(
"UserLogin",
"Users/Login",
new { controller = "Users", action = "Login" }
);
routes.MapRoute(
"DefaultUser",
"Users",
new { controller = "Users", action = "Index" }
);