Comment puis-je créer une URL conviviale dans ASP.NET MVC?
Comment puis-je générer des URLs ASP.NET MVC Framework? Par exemple, nous avons une URL qui ressemble à ceci:
http://site/catalogue/BrowseByStyleLevel/1
le 1 est L'Id du niveau d'étude (plus élevé dans ce cas) à parcourir, mais j'aime reformater L'URL de la même manière que StackOverflow le fait.
par exemple, ces deux URLs vous mèneront au même endroit:
https://stackoverflow.com/questions/119323/nested-for-loops-in-different-languages
EDIT: L'amicale de la partie de l'url est appelée un slug .
3 réponses
Il y a deux étapes pour résoudre ce problème. Tout d'abord, créez une nouvelle route ou changez la route par défaut pour accepter un paramètre supplémentaire:
routes.MapRoute( "Default", // Route name
"{controller}/{action}/{id}/{ignoreThisBit}",
new { controller = "Home",
action = "Index",
id = "",
ignoreThisBit = ""} // Parameter defaults )
Maintenant, vous pouvez taper ce que vous voulez à la fin de votre URI et l'application va ignorer.
lorsque vous rendez les liens, vous devez ajouter le texte "amical":
<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
new { id = 1234, ignoreThisBit="friendly-text-here" });
vous avez une route sur le global.asax
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = ""}
// Parameter defaults )
vous pouvez définir votre propre itinéraire comme:
controller est la classe cs à l'intérieur du dossier controllers.
vous pouvez définir votre id - avec le nom que vous choisissez.
le système passera la valeur à votre méthode actionResult.
vous pouvez en savoir plus sur cette étape ici : http://www.asp.net/learn/mvc/tutorial-05-cs.aspx
C'est ainsi que j'ai implémenté L'URL slug sur mon application. Note: la Maproute par défaut ne doit pas être changée et les routes sont traitées dans l'ordre dans lequel elles sont ajoutées à la liste des routes.
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute("Place", "{controller}/{action}/{id}/{slug}", new { controller = "Place", action = "Details", id = UrlParameter.Optional,slug="" });