2009-04-07 48 views
7

Estoy intentando escribir un clon de TinyURL en ASP.NET MVC como primer proyecto para acostumbrarme al framework.TinyURL como el enrutamiento con ASP.NET MVC?

El enrutamiento de URL sigue siendo un poco confuso para mí, especialmente cuando me desvío del controlador/acción/id.

¿Puede alguno de ustedes ASP.NET MVC ninjas ayudarme a configurar una ruta URL simple similar a cómo TinyURL.com procesa sus rutas?

Por ejemplo:

www.tinyurl.com/

redirige al índice de la página. Entonces, si no se pasan parámetros, simplemente llame a la vista de índice().

Sin embargo, si pasa el hash de tinyurl, necesito llamar a la acción redirigir().

www.tinyurl.com/fbc13

Entonces, ¿cómo hago para la creación de esta ruta personalizada?

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

Esto no es del todo correcto, porque si sólo hay que visitar la página sin almohadilla en la url, lo tengo por defecto a la redirección() acción cuando yo quiero que en su lugar, llame al Índice() método.

¿Sugerencias sobre cómo imitar una ruta básica similar a TinyURL?

Respuesta

12

Estás en el camino correcto. Crea una ruta vacía y no serás redirigido.

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

y cambiar su defecto para

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

Alternativamente usted podría tener el controlador de comprobar el valor tinyhash y mostrar una visión diferente si está vacío. (Eso es hacky)

+0

@benrick, gracias un montón! – KingNestor

Cuestiones relacionadas