Wie kann ich Routen in ASP.NET MVC in Kleinbuchstaben und wenn möglich mit Unterstrich versehen? Damit ich /dinners/details/2
anrufen DinnersController.Details(2)
und wenn möglich /dinners/more_details/2
anrufen würde DinnersController.MoreDetails(2)
?
All dies, während immer noch Muster wie verwendet werden {controller}/{action}/{id}
.
asp.net-mvc
url
routes
case
J. Pablo Fernández
quelle
quelle
Antworten:
Mit System.Web.Routing 4.5 können Sie dies einfach implementieren, indem Sie die LowercaseUrls-Eigenschaft von RouteCollection festlegen:
Angenommen, Sie tun dies aus SEO-Gründen, um eingehende URLs in Kleinbuchstaben umzuleiten (wie in vielen Links in diesem Artikel erwähnt).
quelle
Diese beiden Tutorials haben mir geholfen, als ich das Gleiche tun und gut arbeiten wollte:
http://www.coderjournal.com/2008/03/force-mvc-route-url-lowercase/ http://goneale.com/2008/12/19/lowercase-route-urls-in-aspnet-mvc/
BEARBEITEN: Für Projekte mit Bereichen müssen Sie die GetVirtualPath () -Methode ändern:
quelle
Wenn Sie geschehen ASP.NET - Core zu verwenden, sollten Sie vielleicht einen Blick auf haben dies :
quelle
Wenn Sie den UrlHelper zum Generieren des Links verwenden, können Sie einfach den Namen der Aktion und des Controllers in Kleinbuchstaben angeben:
Ergebnisse in: / media / photos / delete / 64 (obwohl mein Controller und meine Aktion ein Pascal-Fall sind).
quelle
Ich fand dies im Coder Journal von Nick Berardi , aber es gab keine Informationen darüber, wie die
LowercaseRoute
Klasse implementiert werden sollte . Daher hier mit zusätzlichen Informationen neu posten.Erweitern Sie zuerst die
Route
Klasse aufLowercaseRoute
Ändern Sie dann die
RegisterRoutes
Methode von Global.asax.csIch würde jedoch gerne wissen, wie man Routen verwendet. MapRoute ...
quelle
routes.MapRouteLowercase(...
die besserSie können die MapRoute-Syntax weiterhin verwenden, indem Sie diese Klasse als Erweiterung zu RouteCollection hinzufügen:
Jetzt können Sie im Start Ihrer Anwendung "MapRouteLowerCase" anstelle von "MapRoute" verwenden:
quelle
LowercaseRoute
scheint die Klasse im ersten Code-Snippet oben von dieser anderen AntwortDies hat tatsächlich zwei Antworten:
Für die Unterstriche bist du allein ...
quelle
Könnten Sie das ActionName-Attribut verwenden?
Ich denke nicht, dass der Fall wichtig ist. More_Details, more_DETAILS, mOrE_DeTaILs in der URL führen Sie alle zur gleichen Controller-Aktion.
quelle