¿Cómo puedo tener rutas en minúsculas y guiones bajos si es posible, en ASP.NET MVC? ¿Para que tuviera que /dinners/details/2
llamar DinnersController.Details(2)
y, si es posible, /dinners/more_details/2
llamar DinnersController.MoreDetails(2)
?
Todo esto mientras sigues usando patrones como {controller}/{action}/{id}
.
asp.net-mvc
url
routes
case
J. Pablo Fernández
fuente
fuente
Respuestas:
Con System.Web.Routing 4.5 puede implementar esto directamente configurando la propiedad LowercaseUrls de RouteCollection:
También suponiendo que está haciendo esto por razones de SEO que desea redirigir las URL entrantes a minúsculas (como se dice en muchos de los enlaces de este artículo).
fuente
Estos dos tutoriales me ayudaron cuando quería hacer lo mismo y trabajar bien:
http://www.coderjournal.com/2008/03/force-mvc-route-url-lowercase/ http://goneale.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/
EDITAR: Para proyectos con áreas, debe modificar el método GetVirtualPath ():
fuente
Si utilizaste ASP.NET Core, probablemente deberías echarle un vistazo a esto :
fuente
Si está utilizando UrlHelper para generar el enlace, simplemente puede especificar el nombre de la acción y el controlador en minúsculas:
Resultados en: / media / photos / delete / 64 (aunque mi controlador y acción son pascal case).
fuente
Encontré esto en Coder Journal de Nick Berardi , pero no tenía información sobre cómo implementar el
LowercaseRoute
clase. Por lo tanto, volver a publicar aquí con información adicional.Primero extienda la
Route
clase aLowercaseRoute
Luego modifique el
RegisterRoutes
método de Global.asax.csSin embargo, me gustaría saber una forma de usar rutas. MapRoute ...
fuente
routes.MapRouteLowercase(...
que es mejor que el anterior: goneale.wordpress.com/2008/12/19/…Puede continuar usando la sintaxis de MapRoute agregando esta clase como una extensión a RouteCollection:
Ahora puede usar en el inicio de su aplicación "MapRouteLowerCase" en lugar de "MapRoute":
fuente
LowercaseRoute
clase en el primer fragmento de código anterior parece provenir de esta otra respuestaEsto en realidad tiene dos respuestas:
Sin embargo, estás solo para los guiones bajos ...
fuente
¿Podría usar el atributo ActionName?
No creo que el caso importe. More_Details, more_DETAILS, mOrE_DeTaILs en la URL te llevan a la misma acción del controlador.
fuente