2010-09-01 5 views
10

Je suis en train de faire quelque chose comme stackoverflowASP.NET MVC routage/SEO Friendly URL

Prenez un lien de stackoverflow par exemple:

Hidden Features of C#?

si vous supprimez la dernière partie (Hidden Features of C#?) il retourne toujours le même résultat.

Pour mon routage dans Global.asax j'essayé de faire quelque chose comme "{action}/{id}/{title}"

Sur ma page, voici mon lien:

<%= Html.ActionLink(video.Title, "Details", "Videos", new {id = video.ID, title = video.Title.Replace(" ", "-")}, null) %> 

ce fait ce que je veux faire pour la plupart, sauf que, après l'id il jette dans « ? title = bla-bla-bla »

je le veux dire "id/bla-bla-bla "

Quel est mon problème? (En plus d'être un noob)

+0

Pourriez-vous afficher toutes les routes dans votre global.asax.cs? Peut-être qu'un autre est en train d'être jumelé en premier ... – Peter

+0

@Peter en effet c'était le cas –

+1

+1 pour "Quel est mon problème? (En plus d'être un noob)" – Jake

Répondre

4

Cette route semble fonctionner avec cet appel à ActionLink, donc c'est un peu une conjecture. Enregistrez-vous votre itinéraire "{action}/{id}/{title}" après la route par défaut? Si c'est le cas, la route par défaut correspondra en premier, et il suffit de mettre la valeur du titre dans la chaîne de requête car elle n'apparaît pas dans le chemin. Si vous enregistrez votre route personnalisée avant le {controller}/{action}/{id} par défaut, cela devrait fonctionner.

+0

Il est enregistré avant la route par défaut, cependant, vous m'avez indiqué la bonne direction. En fait, il est descendu à la séquence réelle des routes enregistrées. merci –

9

j'ai écrit un billet de blog sur ce un certain temps et pensé qu'il pourrait être utile:

http://mynameiscoffey.com/2010/12/19/seo-friendly-urls-in-asp-net-mvc/

Fondamentalement, vous devez vérifier dans votre action pour la présence du titre SEO-friendly correct lorsque votre L'action s'exécute et, si elle ne la trouve pas, renvoie une redirection vers le navigateur vers l'URL adaptée au référencement.

+0

+1 très joli blog, assez utile! –

+0

Super article. Puis-je suggérer de mettre '.Trim ('-')' à la fin de votre méthode 'SeoName' pour empêcher des choses comme" One (Two) "de devenir" one-two- ". –

+0

parfait! spécialement pour moi migrer de webform à mvc. –