Comment puis-je avoir des routes en minuscules, plus un trait de soulignement si possible dans ASP.NET MVC? Pour que /dinners/details/2
j'appelle DinnersController.Details(2)
et, si possible, /dinners/more_details/2
appelle DinnersController.MoreDetails(2)
?
Tout cela tout en utilisant des modèles comme {controller}/{action}/{id}
.
asp.net-mvc
url
routes
case
J. Pablo Fernández
la source
la source
Réponses:
Avec System.Web.Routing 4.5, vous pouvez implémenter ce simple en définissant la propriété LowercaseUrls de RouteCollection:
En supposant également que vous faites cela pour des raisons de référencement, vous souhaitez rediriger les URL entrantes en minuscules (comme indiqué dans de nombreux liens de cet article).
la source
Ces deux tutoriels m'ont aidé lorsque je voulais faire la même chose et bien fonctionner:
http://www.coderjournal.com/2008/03/force-mvc-route-url-lowercase/ http://goneale.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/
EDIT: Pour les projets avec des zones, vous devez modifier la méthode GetVirtualPath ():
la source
Si vous utilisez ASP.NET Core, vous devriez probablement jeter un œil à ceci :
la source
Si vous utilisez UrlHelper pour générer le lien, vous pouvez simplement spécifier le nom de l'action et du contrôleur en minuscules:
Résultats dans: / media / photos / delete / 64 (même si mon contrôleur et mon action sont des cas pascal).
la source
J'ai trouvé cela au Coder Journal de Nick Berardi , mais il ne contenait pas d'informations sur la manière d'implémenter la
LowercaseRoute
classe. Par conséquent, republier ici avec des informations supplémentaires.Commencez par étendre la
Route
classe àLowercaseRoute
Puis modifiez la
RegisterRoutes
méthode de Global.asax.csJ'aimerais cependant connaître un moyen d'utiliser les routes.MapRoute ...
la source
routes.MapRouteLowercase(...
ce qui est plus agréable que ce qui précède: goneale.wordpress.com/2008/12/19Vous pouvez continuer à utiliser la syntaxe MapRoute en ajoutant cette classe comme extension à RouteCollection:
Vous pouvez maintenant utiliser au démarrage de votre application "MapRouteLowerCase" au lieu de "MapRoute":
la source
LowercaseRoute
classe du premier extrait de code ci-dessus semble provenir de cette autre réponseCela a en fait deux réponses:
Vous êtes seul pour les traits de soulignement, cependant ...
la source
Pourriez-vous utiliser l'attribut ActionName?
Je ne pense pas que le cas compte. More_Details, more_DETAILS, mOrE_DeTaILs dans l'URL vous amènent tous à la même action de contrôleur.
la source