Carte d'itinéraire asp.net mvc
J'essaie de faire de mon url seo friendly. J'ai besoin de faire de l'url avec cette structure
www.domainname.com/article123.
Et avec cette route
routes.MapRoute(
"articlename", //Route name
"aaaa/{articleID}", //URL with parameters
new {action="DetailsByName",controller="Article"},
new string[] { "bssnew.Controllers" } //Parameter defaults);
Il ne fonctionne pas. MON itinéraire lien ressemble ce
@Html.RouteLink("aaa ","articlename", new {articleID="CentralPark",},new { @class = "item-link" })
Mais quand j'ai ajouter un contrôleur et l'action en route il fonctionne
routes.MapRoute(
"articlename", //Route name
"aaaa/{controller}/{action}/{articleID}", //URL with parameters
new {action="DetailsByName",controller="Article"},
new string[] { "bssnew.Controllers" } //Parameter defaults);
- Qu'est-ce que "aaaa" censé être?
- juste préfixe il n'est pas important, quand je l'enlever c'est ne fonctionne pas
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin d'un IDENTIFIANT spécifique de l'itinéraire, les points suivants doivent travailler
En supposant que vous avez une manette qui ressemble à
// Parameter defaults
faut effectivement aller sur une ligne précédente. La dernière ligne est des espaces de noms d'inscription. 🙂@Html.RouteLink
méthode d'action pour générer de James route quelle que soit la position. La route va être recherchés par leur nom et non pas dans un ordre séquentiel.Html.RouteLink("Link name", "articlename", new {controller = "Article", action = "DetailsByName", articleId = yourArticleId})
Ce qui devrait créer un lien vers une route nommée.DetailsByName
action dans leArticle
contrôleur qui attend un paramètre nomméarticleID
?Je répond à vous par l'intermédiaire de James commentaire. Un problème peut être que vous la route ressemble à ceci:
Lorsqu'un itinéraire est généré (n'utilisant pas de route nommée) votre lien devrait ressembler à:
http://www.example.com/Article/DetailsByName?articleId=123
où 123 est votre ID de l'article.La condition pour que le lien ci-dessus pour être généré comme c'est de placer en avant "par Défaut" de l'itinéraire. Aussi, vérifiez si l'espace de noms de l'enregistrement est à l'origine d'un problème pour vous. Essayez tout d'abord de la suppression de l'espace de noms s'il n'est pas nécessaire.
Voici un petit échantillon que j'ai créé sur la base de votre question. Le résultat a été que, même après la mise de route nommée en dessous de celui par défaut, j'ai réussi à générer un itinéraire. Voici le contenu de la
RouteConfig.cs
:Dans mon contrôleur HomeController j'ai ajouté l'action suivante:
Maintenant, voici le contenu de la vue Index
Le code ci-dessus génère ce que l'on attend. Par exemple (BTW, je suis en utilisant certains mannequin le lien sous AFIN de ne pas permettre à localhost pour être utilisé):
Si je supprime {controller}/{action} à partir de mon calcul d'itinéraire, il serait générer le lien (avec des routes nommées) comme http://www.example.com/1/2.
Donc, pour résumer, si vous prévoyez d'utiliser la route nommée pour générer SEO friendly URLs, configurer votre itinéraire avec {controller}/{action}/{articleId}. Si elle n'est pas trop important générer vos itinéraires avec RouteLink, mais ne précisent pas le nom de l'itinéraire.
Mise à JOUR:
Si vous ne prévoyez pas d'utiliser {controller}/{action} dans votre route et {articleId}, vous devez placer votre itinéraire avant la valeur par Défaut et de ne pas utiliser de route nommée lors de la génération de liens. Dans mon exemple ci-dessus qui pourrait ressembler à:
Maintenant, lorsque vous générez un lien à l'aide de
@Html.RouteLink
vous le faire de cette façon:et cela va générer quelque chose comme:
Mise à JOUR 2: Quant à vous demander sur d'autres itinéraires, vous pouvez toujours compter sur route par Défaut pour générer de l'information, cependant, vous ne pouvez pas avoir généré des routes, comme vous dites dans un commentaire:
http://www.example.com/abc pour les articles et les http://www.example.com/def pour les produits
Le problème est que les routes sont les mêmes et le système de routage prenez la première route qui peuvent servir de votre demande. Il peut arriver que les deux demandes sont servis par le même itinéraire. Vous avez besoin de distinguer entre les deux voies. Donc, pour vos articles utiliser votre nouvel itinéraire que vous avez défini et pour d'autres choses où l'on paramètre devrait vous utilisez la route par Défaut.
[Routes nommées avec ASP.NET MVC][1]
http://dotnet.dzone.com/articles/named-routes-aspnet-mvc
Essayez ceci:
Je l'ai eu à travailler comme cela. Je pense que la mise en œuvre est un peu plus propre et plus facile à comprendre de cette façon (en utilisant les noms de paramètres et pas les espaces de noms). La route code s'affiche au-dessus de la route par défaut comme suit:
Et le contrôleur ressemble à ceci: