none
Múltiples rutas RRS feed

  • Pregunta

  • Buenas tardes,

    He modificado mi ruta para aquellas acciones que requieran un párametro, hasta el momento lo he hecho de esta forma:

    	[HttpGet]
            [Route("Proveedor/{IdProveedor}/Editar")]
            public ActionResult Editar(int idProveedor)
            {
                var proveedorModelo = ProveedorLogN.ObtenerPorId(idProveedor);
    
                proveedorModelo.ListaMoneda = MonedaLogN.ObtenerTodos();
    
                return View(proveedorModelo);
            }


    Funciona bien, pero tiene la desventaja que usando el atributo Route, tengo que ir colocando éste en cada acción.

    Para suprimir ese paso, he querido añadir una nueva ruta en mi RouteConfig:

     public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapMvcAttributeRoutes();
    
                routes.MapRoute(
                     name: "test",
                     url: "{controller}/{id}/{action}",
                     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
    
                routes.MapRoute(
                     name: "Default",
                     url: "{controller}/{action}/{id}",
                     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }

    A pesar de haberla agregado, realizo una operación sigo obteniedo la ruta por defecto.

    Hace falta alguna otra configuración?

    Saludos,


    Carlos Márquez
    San Pedro Sula
    Honduras

    jueves, 26 de mayo de 2016 21:14

Respuestas

  • hola

    >>Funciona bien, pero tiene la desventaja que usando el atributo Route, tengo que ir colocando éste en cada acción.

    pero cual seria el problema ? vas definiendo la ruta a medida que programas, no veo porque complicarlo

    >>A pesar de haberla agregado, realizo una operación sigo obteniedo la ruta por defecto.

    el tema es que defines el id en medio como opcional entonces nunca va a a ingresar por este

    cuando defines el [Route] le estas indicando un valor que resuelve de forma concreta, en cambio al hacerlo generico lo haces opcional y eso impide que resuelva correctamente

    sigo pensando que le das vuelta a un problema que no es no problema, miles de programadores definen el [Route] en cada action y esto no es ninguan desventaja sino que te permite personalizar como debe resolver, y donde no lo necesites deja que use la que genera por defecto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 27 de mayo de 2016 10:07

Todas las respuestas

  • hola

    >>Funciona bien, pero tiene la desventaja que usando el atributo Route, tengo que ir colocando éste en cada acción.

    pero cual seria el problema ? vas definiendo la ruta a medida que programas, no veo porque complicarlo

    >>A pesar de haberla agregado, realizo una operación sigo obteniedo la ruta por defecto.

    el tema es que defines el id en medio como opcional entonces nunca va a a ingresar por este

    cuando defines el [Route] le estas indicando un valor que resuelve de forma concreta, en cambio al hacerlo generico lo haces opcional y eso impide que resuelva correctamente

    sigo pensando que le das vuelta a un problema que no es no problema, miles de programadores definen el [Route] en cada action y esto no es ninguan desventaja sino que te permite personalizar como debe resolver, y donde no lo necesites deja que use la que genera por defecto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 27 de mayo de 2016 10:07
  • Hola, Tuttini.

    Ha funcionado de esta forma:

    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapMvcAttributeRoutes();
    
                routes.MapRoute(
                     name: "Default1",
                     url: "{controller}/{id}/{action}"
                );
    
                routes.MapRoute(
                     name: "Default",
                     url: "{controller}/{action}/{id}",
                     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
    
    
            }


    Carlos Márquez
    San Pedro Sula
    Honduras

    viernes, 27 de mayo de 2016 20:22