2011-10-09 3 views
0

J'ai une question sur le routage/la navigation avec-dans le même contrôleur.Routage MVC 3 - Single Action Routing

Disons que j'ai la configuration de l'itinéraire suivant

routes.MapLowercaseRoute("SomeAwesomeControllerLookup", 
    "SomeAwesomeController/{genre}/{region}/{lookup}", 
    new 
    { 
     controller = "SomeAwesomeController", 
     action = "Index", 
     genre = UrlParameter.Optional, 
     region = UrlParameter.Optional, 
     lookup = UrlParameter.Optional, 
}); 

et une action URL comme suit

<a href="@Url.Action("Index", "SomeAwesomeController", new { genre = "Movies" })">Movies</a> 

Je me attends mon URL pour ressembler à «/someawesomecontroller/films » à chaque fois Toutefois, lorsque j'ai navigué vers une URL filtrée comme "/ someawesomecontroller/movies/boston/today", l'URL de mon menu reste "/ someawesomecontroller/movies/boston/today", quels que soient les paramètres spécifiés dans le code HTML ci-dessus.

Je peux m'assurer que l'URL affichée est toujours "/ someawesomecontroller/movies" sans le coder en dur?

Répondre

0

Comme j'ai appris une autre fois, les valeurs de route sont filtrées et utilisées par le moteur de rendu Action.

<a href="@Url.Action("Index", "SomeAwesomeController", new { genre = "Movies", region="", lookup="" })">Movies</a> 

Résolution du problème. . (Pourrait aussi essayer « null », mais je crois que ne l'emporteront pas les valeurs de route existantes

+0

Pas tout à fait, il semblait transformer les paramètres en chaîne de requête valeurs ex:/someawesomecontroller/films region = bla & recherche = bla J'ai aussi essayé ce qui suit 'Movies' Mais qui vient vider les paramètres de chaîne de requête ex:.?. /someawesomecontroller/films region = & recherche = Malheureusement on ne peut pas affecter null à un paramètre anonyme – BarendB

+0

@ BarendB http://stackoverflow.com/questions/7513933/asp-net-mvc-inconsistent-rendering-of-actionlink/7513960#comment9 102664_7513960 essayez ce lien. C'est là que je m'en suis souvenu. –