2009-04-07 4 views
7

Я пытаюсь написать TinyURL как клон в ASP.NET MVC как первый проект, который привыкнет к фреймворку.TinyURL как маршрутизация с ASP.NET MVC?

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

Может ли кто-нибудь из вас ASP.NET MVC ninjas помочь мне настроить простой 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, я получил его недобросовестный редиректа() действие, когда я хочу, чтобы вместо этого вызовите индекс().

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

ответ

12

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

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

и изменить ваш по умолчанию один к

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

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

+0

@benrick, спасибо тонну! – KingNestor

 Смежные вопросы

  • Нет связанных вопросов^_^