Pregunta

Soy nuevo a MVC tierra, y tienen una aplicación que estoy trabajando. tengo 2 enlaces diferentes con 2 rutas en mi globales que son bastante similar

ruta 1

routes.MapRoute("Category", "Movies/{category}/{subcategory}", 
    new { controller = "Catalog", action = "Index", category = "", subcategory = "" });

ruta 2

routes.MapRoute("Movie", "Movie/{movie}", 
    new { controller = "Movie", action = "Index", movie = "" });

Cuando llamo a un ActionLink por primera ruta se crea como yo creo que debería:

  

.../Movies/Category/SubCategory

Sin embargo, cuando creo mi segundo enlace puebla de esta manera:

  

.../Movie?movieId=ff569575-08ec-4049-93e2-901e7b0cb96a

Yo estaba usando una cadena en lugar de un GUID antes y todavía estaba haciendo lo mismo es decir.

  

.../Movie?movieName=Snatch

mis actionlinks se establecieron de la siguiente

<%= Html.ActionLink(parent.Name, "Index", "Catalog",
    new { category = parent.Name, subCategory = "" }, null)%>

<%= Html.ActionLink(movie.Name, "Index", "Movie", 
    new { movieId = movie.MovieId }, null)%>

Mi aplicación sigue funcionando, pero pensé que este comportamiento era extraño. cualquier ayuda sería grande.

Gracias!

¿Fue útil?

Solución

routes.MapRoute("Movie", "Movie/{movieId}", 
    new { controller = "Movie", action = "Index", movie = "" });

En caso de que el texto ruta no coincidir con el nombre de la propiedad que va a enviar al enlace MVC?

Otros consejos

El problema es que cuando se llama a ActionLink, el sistema de enrutamiento no puede averiguar cuál de las dos rutas de usar, por lo que elige la primera. La solución es utilizar RouteLink en lugar de ActionLink. RouteLink le permite especificar el nombre de la ruta a utilizar al generar la URI. Entonces no hay ninguna ambigüedad en cuanto a qué ruta a utilizar. Creo que ActionLink es obsoleto. No puedo pensar en ninguna razón para usarlo en lugar del de RouteLink.

Sin embargo, es posible que tenga un problema cuando el usuario envía enlaces. En ese caso, utilizar restricciones de ruta para hacer cumplir la selección de la ruta correcta.

Andrew es correcta (arriba-votó) que las fichas que se utilizan en ActionLink / RouteLink y la ruta en sí deben coincidir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top