Benutzerdefinierte MapRoute

8

Ich versuche, einige benutzerdefinierte Kartenrouten zu erstellen, aber es funktioniert nicht richtig.

Mein oberstes 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-Estate-Name / 89-My-Subgroup-Name / 133-Vielleicht-auch-eine andere-Untergruppe

Für den Anfang arbeite ich an der ersten Sektion und habe Probleme.

Wenn Sie auf der folgenden Route nach "http: // localhost: 53933 / dashboards / 109-building-xyz" blättern, wird der Fehler A public action method '109-building-xyz' was not found on controller 'MyInterfaceInterface.Controllers.DashboardsController'.

generiert %Vor%

Offensichtlich wollte ich, dass es mit Parametern zur Index-Funktion geroutet wird.

Was mache ich falsch? Strukturiere ich das überhaupt richtig? Ich komme aus einem Web-PHP-Hintergrund und verwende htaccess, um solche Dinge zu erreichen.

Danke

    
Chris 23.05.2012, 15:53
quelle

1 Antwort

9

Die Reihenfolge der Routen ist wichtig. MVC gleicht die erste deklarierte Route mit einem Muster ab, das dem URL-Muster entspricht.

Also wenn du das hast:

%Vor%

Was dann mit der URL http://localhost:53933/dashboards/109-building-xyz passiert, ist, dass MVC "Dashboards" mit dem Controller und "109-Building-xyz" mit der Aktion vergleicht.

Sie müssen immer zuerst Ihre spezifischsten Routen und dann allgemeinere Routen wie folgt angeben:

%Vor%

Aber Morten Mertner hat in seinem Kommentar Recht - ich glaube nicht, dass Sie zwei Routenparameter haben können, die nicht durch einen Schrägstrich voneinander getrennt sind. Sie müssten Ihr URL-Muster in etwa so ändern, um es mit der Standard-Routing-Engine zu verwenden:

%Vor%     
danludwig 23.05.2012, 16:10
quelle