Мой сайт ASP.NET MVC позволяет пользователям регистрироваться и давать себе имена пользователей, которые будут уникальными и позволять другим просматривать свои страницы с чистым URL-адресом, включающим их имена, как это делают Twitter, Facebook, LinkedIn и т. Д.
Например:
- mysite.com / michael.guthrie
- mysite.com / джон
- mysite.com / Джон / изображения
- mysite.com / джон / блог
и т.д.
Проблема в том, что первый сегмент URL может использоваться для других «обычных» контроллеров / действий, например:
- mysite.com / о
- mysite.com / регистрация
Таким образом, в основном я ищу схему маршрутизации, которая говорит что-то вроде: если первый сегмент URL является известным контроллером, обрабатывайте его как контроллер (и анализируйте соответствующие действия и параметры как обычно), а если нет - рассматривайте его как имя пользователя и передать его выделенному контроллеру + действие, которое проанализирует его и продолжит соответственно.
Я не хочу решение, которое заставит меня добавлять маршруты для каждого конкретного контроллера, который у меня есть, так что после того, как модуль маршрутизации пройдет через все из них и не найдет соответствия , он доберется до последнего, который определяет маршрут для этого специального сегмента имени пользователя. Причина в основном в обслуживании (я должен не забыть добавлять маршрут каждый раз, когда я, например, кодирую новый контроллер).
Я предполагаю, что могу реализовать свой собственный MvcRouteHandler
/ IRouteHandler
, но я чувствую, что должно быть более простое решение, которое не заставит меня настроить механизм маршрутизации MVC "из коробки".
Примечание: Я прочитал Как получить красивый URL-адрес страницы USER, такой как Facebook или Twitter? и он не отвечает на мой вопрос, он просто говорит, что есть Модуль перезаписи URL.
Вы знаете какой-нибудь хороший, элегантный, чистый способ достичь этого?