Question

Je suis nouveau à la terre MVC, et ont une application que je travaille. J'ai 2 différents liens avec 2 voies dans mon monde qui sont assez similaire

itinéraire 1

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

itinéraire 2

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

Quand j'appelle un ActionLink pour la première voie qu'il crée comme je pense qu'il devrait:

  

.../Movies/Category/SubCategory

Mais quand je crée mon deuxième lien comme il renseigne ce:

  

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

J'utilisais une chaîne au lieu d'un guid avant et il faisait toujours le même i.e..

  

.../Movie?movieName=Snatch

mes ActionLinks sont définies comme suit

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

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

Mon application fonctionne toujours, mais je pensais que ce comportement était étrange. toute aide serait grande.

Merci!

Était-ce utile?

La solution

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

le texte de la route doit correspondre à pas le nom de la propriété que vous soumettez au lien mvc?

Autres conseils

Le problème est que lorsque vous appelez ActionLink, le système de routage ne peut pas comprendre lequel des deux voies à utiliser, il choisit la première. La solution est d'utiliser RouteLink au lieu de ActionLink. RouteLink vous permet de spécifier le nom de la route à utiliser pour générer l'URI. Ensuite, il n'y a pas d'ambiguïté sur la route à utiliser. Je pense que ActionLink est obsolète. Je ne peux penser à aucune raison de l'utiliser au lieu de de RouteLink.

Cependant, vous pouvez toujours avoir un problème lorsque l'utilisateur soumet des liens. Dans ce cas, utiliser des contraintes de route pour faire respecter le choix de l'itinéraire correct.

Andrew est correct (mise a voté) que les jetons que vous utilisez dans ActionLink / RouteLink et la route elle-même doit correspondre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top