Rarezas de enrutamiento MVC4

Tengo este ActionLink en una de mis vistas

Html.ActionLink(pop.PopName, "ShowAllEncounters", "Encounter", new {popId = pop.populationID })

Estoy pensando que eso me llevará a la ruta correcta...
Pero en lugar de eso voy a esta ruta...

http://localhost:19283/Population/ShowAllEncounters?Length=9

La ruta debe ser

http://localhost:19283/Encounter/ShowAllEncounters?Length=9

Busqué en mi archivo global.asax y todo parece normal... No cambié la ruta predeterminada de ninguna manera, excepto para configurar la página de inicio predeterminada...

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

Que es lo que esperaba... Que es similar a una ruta MVC3 que tenía. ¿Estoy haciendo algo extraño con mis rutas? ¿Que me estoy perdiendo aqui?

preguntado el 22 de mayo de 12 a las 18:05

2 Respuestas

Parece que estás llamando a la sobrecarga del método incorrecto:

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    Object routeValues,
    Object htmlAttributes
)

http://msdn.microsoft.com/en-us/library/dd492124.aspx

En su lugar, intente llamar a esta sobrecarga:

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    Object routeValues,
    Object htmlAttributes
)

http://msdn.microsoft.com/en-us/library/dd504972.aspx


Para llamar a la sobrecarga adecuada, use algo similar a lo siguiente:

Html.ActionLink(pop.PopName,
                "ShowAllEncounters",
                "Encounter",
                null,
                new {popId = pop.populationID })

contestado el 22 de mayo de 12 a las 18:05

Creo que puede ser al revés (para los dos últimos parámetros), pero creo que ha respondido a mi pregunta. Además, estoy escribiendo la cadena dos veces y parece que no puedo entender por qué. - SoftwareSavant

Tu codigo

Html.ActionLink(pop.PopName, "ShowAllEncounters", "Encounter", new {popId = pop.populationID })

Debieran ser

Html.ActionLink(pop.PopName, "ShowAllEncounters", new {controller="Encounter"}, new {popId = pop.populationID })

Respondido 10 ago 12, 18:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.