2010-12-15 126 views
0

J'ai un site où je voudrais une URL comme:Comment puis-je faire des itinéraires de niveau mieux dans MVC multiplée

/Some maincategory name/{id}/Some subcategory name/{id}/Some item name/{id}

I comprennent les ID de chaque niveau puisque le nom n'est pas unique. C'est faisable mais je dois créer un nouveau routage pour chaque niveau. Mon Html.ActionLink a aussi l'air méchant.

Chaque niveau possède son propre contrôleur car les niveaux sont complètement différents. Les URL peuvent être quelque chose comme ceci:

_/Birds/2/Waders/4/Flamingos/23_ 
_/Mammals/5/Dogs/23/Longeared/25/Somedog/76_ 
_/Insects/7/Spiders_ 

Ceci est juste un exemple et pas ce que je vais utiliser. Mes applications n'ont rien à voir avec les animaux.

Existe-t-il un bon moyen de le faire ou dois-je utiliser le routage standard à la place?

+0

Alors ... vous dites que vous aurez _/Birds/2/Waders/4/_ * et * _/Birds/48/Waders/7/_ et qu'ils devront être acheminés vers différents contrôleurs? Je suis désolé, mais mon cerveau fait mal juste essayer de comprendre ce que vous essayez d'atteindre. Il ya presque certainement un moyen de laisser tomber les ID, mais vous n'avez pas donné assez, ou assez spécifique, détail à dire, imo. –

Répondre

0

Il y a deux solutions pour cela:

  1. Utilisation de routage global qui se traduit par

    http://you.url.com/controller/action/ {mi}/{sid}/{tid}

    où mid = principale catégorie id sid = ID de la sous-catégorie tid = ID de l'article

  2. Utilisation de la combinaison de routage et Chaîne de requête

    http://you.url.com/controller/action/ {tid}? Mid = {} mi & sid = {} sid

Je vous suggère d'utiliser la deuxième méthode, vous n'avez pas à la messe avec la route des choses. et j'espère que cette aide !!

+0

Je sais comment faire cela avec des routes globales, mais la solution semble moche et je voulais savoir si quelqu'un savait comment faire cela d'une manière plus intelligente/plus propre. J'ai aussi un contrôleur/vue pour chaque niveau et il peut y avoir jusqu'à 5 niveaux. Je suppose que ce que je voudrais, c'est un breadcrum dans mon URL ... – Lilja

+0

Je l'ai fait de façon standard avec le controller/action/{id} pour garder les choses simples. – Lilja

0

Que diriez-vous de créer un fichier xml décrivant vos catégories, valeurs, URLs à chaque nœud, puis créer une table de routage en passant par ces nœuds xml?

Ce type de fichier XML peut également vous aider à créer des miettes de pain sur vos pages.