Jak mogę mieć trasy małymi literami i podkreśleniem, jeśli to możliwe, w ASP.NET MVC? Żebym miał /dinners/details/2
zadzwonić DinnersController.Details(2)
i, jeśli to możliwe, /dinners/more_details/2
zadzwonić DinnersController.MoreDetails(2)
?
Wszystko to przy użyciu wzorów takich jak {controller}/{action}/{id}
.
asp.net-mvc
url
routes
case
J. Pablo Fernández
źródło
źródło
Odpowiedzi:
Dzięki System.Web.Routing 4.5 możesz zaimplementować to w prosty sposób, ustawiając właściwość LowercaseUrls w RouteCollection:
Zakładając również, że robisz to ze względów SEO, chcesz przekierować przychodzące adresy URL na małe litery (jak wspomniano w wielu linkach w tym artykule).
źródło
Te dwa samouczki pomogły, gdy chciałem zrobić to samo i dobrze działać:
http://www.coderjournal.com/2008/03/force-mvc-route-url-lowercase/ http://goneale.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/
EDYCJA: W przypadku projektów z obszarami należy zmodyfikować metodę GetVirtualPath ():
źródło
Jeśli zdarzyło Ci się używać ASP.NET Core, prawdopodobnie powinieneś rzucić okiem na to :
źródło
Jeśli używasz UrlHelper do generowania linku, możesz po prostu określić nazwę akcji i kontrolera jako małe litery:
Wyniki w: / media / photos / delete / 64 (mimo że mój kontroler i akcja to przypadek pascal).
źródło
Znalazłem to w Coder Journal Nicka Berardiego , ale nie było tam informacji o tym, jak wdrożyć
LowercaseRoute
zajęcia. Stąd ponowne zamieszczenie tutaj dodatkowych informacji.Najpierw rozszerz
Route
klasę doLowercaseRoute
Następnie zmodyfikuj
RegisterRoutes
metodę Global.asax.csChciałbym jednak wiedzieć, jak używać tras.MapRoute ...
źródło
routes.MapRouteLowercase(...
która jest ładniejsza niż powyższe: goneale.wordpress.com/2008/12/19/...Możesz nadal używać składni MapRoute, dodając tę klasę jako rozszerzenie do RouteCollection:
Teraz możesz użyć „MapRouteLowerCase” podczas uruchamiania aplikacji zamiast „MapRoute”:
źródło
LowercaseRoute
klasa w pierwszym fragmencie kodu powyżej wydaje się pochodzić z innej odpowiedziTo faktycznie ma dwie odpowiedzi:
Ale jesteś sam dla podkreślenia ...
źródło
Czy możesz użyć atrybutu ActionName?
Myślę, że sprawa nie ma znaczenia. More_Details, more_DETAILS, mOrE_DeTaILs w adresie URL prowadzą do tej samej akcji kontrolera.
źródło