Ich versuche, einige benutzerdefinierte Kartenrouten zu erstellen, aber es funktioniert nicht richtig.Benutzerdefinierte MapRoute
Mein ultimatives Ziel ist es, etwas wie das Folgende zu spezifizieren. Wobei ich meine URL im Wesentlichen mit den Wertpaaren "ID" und "Name" aufgebaut habe. Der Name ist irrelevant und nur für Benutzer Höflichkeiten, ich werde jedoch die ID in meinem Controller erfordern.
/Dashboards/5-My-Immobilien-name/89-My-Untergruppe-Name/133-Maybe-even-another-Untergruppe
Für den Anfang auf dem ersten Abschnitt arbeite ich und Probleme haben.
Browsing "http: // localhost: 53933/Dashboards/109-Gebäude-xyz", während die folgende Route mit dem Fehler A public action method '109-building-xyz' was not found on controller 'MyInterfaceInterface.Controllers.DashboardsController'.
routes.MapRoute(
"Dashboard",
"dashboards/{id}-{name}", // URL pattern
new { controller = "Dashboards", action = "Index" },
new { id = @"\d+", name = UrlParameter.Optional }
);
Offensichtlich ich dies auf die Index-Funktion geleitet werden wollte erzeugt mit Parametern.
Was mache ich falsch? Strukturiere ich das überhaupt richtig? Ich komme aus einem Web-PHP-Hintergrund und benutze htaccess, um solche Dinge zu erreichen.
Dank
Haben Sie dies nach der Standardroute oder davor hinzugefügt? – Chris
Ich denke, dass Sie Parameter nur mit einem Schrägstrich trennen können (aber das könnte falsch sein). Wenn der Bindestrich als Trennzeichen akzeptiert wird, ist es wahrscheinlich, dass Sie den Bindestrich nach der ID einfügen müssen, damit die Route funktioniert. Wie Chris anmerkt, ist auch die Reihenfolge der Routen wichtig. Ich würde empfehlen, NuGet zu verwenden, um das RouteDebugger-Paket zu installieren (und es in Web.config zu aktivieren). Sie können leicht herausfinden, mit welcher Route eine bestimmte URL übereinstimmt. –