TinyURL, как маршрутизация с ASP.NET MVC? - PullRequest
7 голосов
/ 08 апреля 2009

Я пытаюсь написать клон, подобный TinyURL, в ASP.NET MVC в качестве первого проекта, который привыкнет к фреймворку.

Маршрутизация URL все еще немного сбивает меня с толку, особенно когда я отклоняюсь от контроллера / action / id.

Может ли кто-нибудь из вас, ниндзя ASP.NET MVC, помочь мне настроить простой URL-маршрут, аналогичный тому, как TinyURL.com обрабатывает свои маршруты?

Например:

www.tinyurl.com /

Перенаправляет на страницу индекса. Поэтому, если параметры не передаются, просто вызовите представление Index ().

Однако, если вы передадите свой хэш tinyurl, мне нужно вызвать действие redirect ().

www.tinyurl.com / fbc13

Итак, как мне настроить этот пользовательский маршрут?

 routes.MapRoute(  
                "Default",                              // Route name  
                "{tinyhash}",                           // URL with parameters  
                new { controller = "Link", action = "ReDirect", tinyhash = "" }  // Parameter defaults  
            );  

Это не совсем правильно, потому что, если вы просто посещаете страницу без хэша в URL-адресе, я получаю значение по умолчанию для действия ReDirect (), когда я хочу вместо этого вызвать метод Index ().

Предложения о том, как имитировать базовый маршрут, подобный TinyURL?

1 Ответ

12 голосов
/ 08 апреля 2009

Вы на правильном пути. Создайте пустой маршрут, и вы не будете перенаправлены.

routes.MapRoute(  
    "Default",
    "",
    new { controller = "Home", action = "Index" }
);

и измените значение по умолчанию на

routes.MapRoute(  
    "Redirect",
    "{tinyhash}", 
    new { controller = "Link", action = "ReDirect", tinyhash = "" } 
);

В качестве альтернативы вы можете просто заставить контроллер проверить значение tinyhash и показать другое представление, если оно пустое. (это глупо)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...