Andres Felipe Blog's

My WordPress Blog

Aprendiendo ASP.NET MVC 4 [Parte 3] – Rutas Dinámicas

aprendiendo-net-mvc4Hola a toda, bienvenidos a mi tercer articulo sobre el manejo de controladores en ASP.NET MVC 4. En este articulo nos adentraremos en el mundo del patrón MVC y el procesamiento de solicitudes HTTP. Para empezar es necesario entender que los métodos en un controlador son llamadas action methods porque retornan un objeto de tipo ActionResult, el procesamiento de solicitudes en los controladores se inicia con el motor de enrutamiento (si lo puedo llamar así, el termino ingles es routuing engine) y es el primer tema principal de este articulo.

Routing Engine

El mapeo de rutas dinámicas, es un tema muy sencillo de entender. Según mi experiencia en la mayoría de framework que implementan el patrón MVC, todo tiene un motor de rutas dinámicas y ASP.NET MVC no se queda por fuera. Analicemos el siguiente código en C#:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
namespace HaveYouSeenMe
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

Este código fue tomado del archivo RouteConfig.cs en la carpeta App_Start, del proyecto How You Seen Me?, trabajado en el articulo anterior. Es la definición de un clase publica con un método estático que no retorna nada, en la linea 7 se ignora una ruta por seguridad al proyecto. Desde la linea 9 se inicia con la definición del mapeo de rutas dinámicas, esta definición viene por defecto y podemos observar el patrón en la variable url y por ultimo las variables por defecto llamadas al inicio del proyecto (en esta ruta http://localhost:8080).

El patron {controller}/{action}/{id} nos indica que para llamar la acción de un controlador se debe llamar primero al controlador, la acción y por ultimo el identificador, por ejemplo:

  • http://localhost:8080/Usuarios/Create – se llamara el controlador Usuarios y a la acción Create
  • http://localhost:8080/Usuarios/Actualizar/12 – se llamara el controlador Usuarios, a la acción Actualizar con el id 12. Se podria interpretar que se quiere actualizar la información del usuario con identificador 12.

Como lo dije es sencillo, en la siguiente imagen (ver Img 1) podran encontrar mas ejemplo sobre rutas dinámicas tomados del articulo de referencia.

aprendiendo-asp-net-mvc-4-parte-3-rutas-dinamicas

Img 1 – Ejemplo – Tomado de Beginning ASP.NET MVC 4

Para despedirme los dejo con este video de HovenTrainings donde se explica con un poco mas detallas como crear nuestros propios mapas de URLs. Espero que este articulo sea de mucha utilidad y recuerden aprendan alguno nuevo todos los días. Saludos !! … chao !!

[youtube https://www.youtube.com/watch?v=LEuyRuMR3hU]

Anterior

Aprendiendo Symfony 2 [Parte 1] – Introducción

Siguiente

MomentsJs – Manejo de fechas para Internacionalización i18n

  1. José Alberto Mendez

    Hola amigo, mi idea es simular lo mismo que hace twitter ejemplo pones http://www.twitter.com/user1 y sería lo mismo que decir http://www.twitter.com/perfil.php?usuario=user1 por ejemplo esa idea como podria lograrla en MVC4?(puse php por no decir aspx) en caso de que solo pongas http://www.twitter.com va a la direccion raiz y no a la pagina de los perfiles, entiendes? gracias por su tiempo y porfa escribame la respuesta a josealbertomt1985@gmail.com, salu2

    • Ok ahora estoy en mi celu, no te puedo escribir mucho … Yo lo he hecho son silex y no creo q varié mucho para mvc4 … Yo definiría una sola variabe en la ruta y apuntaría a un controlador en específico … Me tocaría hacer pruebas, apenas pruebe la teoría te doy una mejor respuesta

      • José Alberto Mendez

        gracias hermano, en cuanto puedas me ayudas con eso que llevo tiempo intentandolo y no he podido dar la respuesta, pero entendiste bien la duda que tengo? gracias por tu tiempo! 🙂

        • Hola José, probé mi teoría y me funciono mira este código:

          Definición de la ruta:

          routes.MapRoute(
          name: “Default”,
          url: “{user}”,
          defaults: new {controller = “Hola”, action = “HolaMundo”}
          );

          Recuperar la variable en la vista:

          @ViewContext.RouteData.Values[“user”]

          si notas en la url defino un variable llamada “user” y le digo que por defecto llame el controlador “HolaController” y a la accion “HolaMundo()”

          Revisa esta url: http://stackoverflow.com/questions/6852979/get-current-controller-in-view

          • José Alberto Mendez

            Buenos dias hermano, gracias por tu respuesta ahorita mismo la pruebo, nuevamente gracias! 🙂

Deja un comentario

Creado con WordPress & Tema de Anders Norén