2010-08-24 9 views
0

J'ai une route dans mon asp.net mvc 2 site qui ressemble à ceproblème de routage avec - dans la variable

routes.MapRoute(
       "media_display", 
       "Media/{mediaId}-{mediaName}", 
       new { controller = "Media", action = "Display" }, 
       new { mediaId = @"\d+" } 
      ); 

Où MediaId est l'identifiant et mediaName est le titre des médias. Un exemple

www.example.com/Media/1-test-media-list

Lorsque l'id est 1, et le nom est "test liste des médias", le problème ici est que je remplace l'espace "" par -, et cela ruine ma route. Je n'arrive juste pas à comprendre comment faire ceci afin que "mediaName" puisse contenir un -.

J'ai aussi la rune suivante, mais la solution devrait être la même.

routes.MapRoute(
       "media_display", 
       "Media/{mediaId}-{mediaName}/edit", 
       new { controller = "Media", action = "Edit" }, 
       new { mediaId = @"\d+" } 
      ); 

Aussi sont-il possible de faire une route qui va attraper tous les éléments suivants 3 exampels, en ce moment dois-je seulement 3 routes différentes, mais je voudrais couper cette baisse.

www.example.com/Media/1-test-media-list

www.example.com/Media/1-

www.example.com/Media/1

Répondre

1

Je considère un plus Elega NT et solution plus simple d'avoir www.example.com/Media/1/test-media-list.

Si vous insistez sur vos exemples d'URL, faire une route comme ceci:

routes.MapRoute(
       "media_display", 
       "Media/{slug}", 
       new { controller = "Media", action = "Display" }, 
      ); 

et technique l'utilisation décrite dans this blog post pour analyser l'identifiant, le nom ou tout ce que vous avez besoin de la limace en vous des paramètres d'action.

+0

Je dirais que www.example.com/Media/1-test-media-list est le plus élégant: D La sulotion de slug, va casser la fabrication des urls où j'utilise Html.Action ("Display", "Media", nouveau {mediaId = 1, mediaName = "Some Name"}); Mais si personne n'est capable de m'aider avec {mediaId} - {mediaName} sulotion j'utiliserai {mediaId}/{mediaName} – Androme

+0

J'avais l'habitude d'avoir une propriété qui renvoyait slug généré dans mon modèle de vue quand je l'ai utilisé . Alors vous auriez Html.Action ("Display", "Media", nouveau {slug = Model.MediaSlug}). Mais je pense toujours/id/name est plus agréable. Regardez! Même SO l'utilise;) – Necros

+0

J'ai utilisé la solution/id/name – Androme