Ich möchte einen Weg für einen Controller, der die normalen CRUD-Operationen hat einzurichten, aber die Details der Aktion nicht zeigen ‚Details‘ in der URL möchten. Stackoverflow scheint diese Art von Routing konfiguriert haben:Wie ‚Details‘ in MVC URL-Routing, zu entfernen, aber andere Aktionen intakt lassen?
http://stackoverflow.com/questions/999999/
http://stackoverflow.com/questions/ask
Mit dieser Analogie, meine Routen zur Zeit wie folgt aussehen:
http://stackoverflow.com/questions/Details/999999/
Durch das Hinzufügen der folgenden Weg ich in der Lage war Details
entfernt zu bekommen:
routes.MapRoute("Q1", "questions/{id}",
new { controller = "Questions", action = "Details" });
Wenn Sie jedoch andere Aktionen auf dem Controller ausführen (z. B. /questions/new
für dieses Beispiel), beschweren Sie sich, dass die ID nicht analysiert werden kann.
Gibt es eine Möglichkeit, die Routen einzurichten, so dass ich nicht manuell alle anderen Aktionen (MapRoute "Elemente/erstellen", "Elemente/löschen" usw.) manuell in die Global.asax eingeben muss .cs? Ich würde im Wesentlichen wie eine zweite Strecke haben wie:
routes.MapRoute("Q2", "questions/{action}",
new { controller = "Questions", action = "Index" });
... und habe die Verwendung Route Q1 Routing-Engine, wenn {id}
eine ganze Zahl übereinstimmt, und {action}
wenn es eine Zeichenfolge ist. Ist das möglich?
funktionierte perfekt. Beachten Sie jedoch, dass die Einschränkung als @ "\ d +" gelesen werden muss. – Jason
Danke für die Aufklärung, die ich normalerweise eine Längenbegrenzung nach dem Ausdruck verwenden (d @ „\ d {2}“), so war ich nicht ganz sicher, was einfach zu setzen eine ganze Zahl hat. –