Pregunta

He configurado un proyecto MVC de ASP.NET, y todo funciona bien, pero tengo un problema con el enrutamiento. Mi Global.asax tiene este aspecto:

public static void RegisterRoutes(RouteCollection routes) {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );
    }

Entonces, nada fuera de lo común. Mi problema es que cuando me vinculo a un controlador / acción / params con un HTML.ActionLink así:

<%= Html.ActionLink("My link", "SomeAction", "SomeController", new {param="someParam"})%>

debería generar (al menos lo que tenga sentido en mi cabeza) un enlace como: http: //www.localhost/SomeController/SomeAction/someParam .

Pero en su lugar, genera un enlace como este: http://localhost/SomeController/SomeAction?param=someParam

Si realizo manualmente un enlace que enlaza con el resultado esperado (SomeController / SomeAction / someParam), se llama al controlador y la acción correctos, pero el parámetro definido en el método de acción siempre es nulo.

¿Alguna idea?

¿Fue útil?

Solución

Creo que ese enlace solo usará la ruta predeterminada como espera si el nombre del parámetro es id en lugar de param . Tendrá que crear una ruta diferente si desea proporcionar algún otro parámetro allí.

Otros consejos

intenta agregar:

routes.MapRoute(
                    "Default",                                                                                              // Route name
                    "{controller}/{action}/{param}",                                                   // URL with parameters
                    new { controller = "Home", action = "Index", param = "" }  // Parameter defaults
            );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top