Wir versuchen, benutzerdefinierte Routen in einer ASP.NET MVC-Anwendung zu verwenden, um diese URL zu generieren: 'http://example.com/Person/unnecessaryinfo-42'
. Die "unnötige Information" ist der Name der ID, die die URL für den Benutzer hackbar macht. Unten ist der Code für unsere Routenkarte. Dies funktioniert, aber meine Controller-Aktion endet mit "unnötige Information-42" im ID-Parameter. Kann ich das "unnötige info-" entfernen, bevor es die Controlleraktion erreicht?Wie entferne ich unnötige Informationen von einer benutzerfreundlichen URL, bevor es zu einer Controlleraktion kommt
routes.MapRoute("person_id", "person/{id}",
new { controller = "Customer", action = "Details" },
new { id = @"unnecessaryinfo-\d" });
Edit:
hier unsere neuesten Code:
routes.MapRoute("person_id", "person/{unnecessaryinfo}-{id}",
new { controller = "Customer", action = "Details" },
new { id = @"[\d]{1,6}" });
Das Kapitel über Routing von ASP.NET MVC 2 In Action (Seite 234) diskutiert die Verwendung von Datenbank-IDs, wann immer möglich zu vermeiden, aber wenn Sie müssen sie verwenden , Hinzufügen zusätzlicher Informationen, um die URL lesbar zu machen. Das versuchen wir (erfolglos). Die Datenbank-ID reicht derzeit von 1 bis 6 Ziffern (und kann mit der Zeit zunehmen).
Ich habe genau das, was Sie oben haben, versucht und es gibt mir immer noch "unnötige Info-ID" am Controller. Ich verstehe auch nicht, was Sie mit "Sie können auch einige Regex-Einschränkung in der unnötigen Info-Route-Token hinzufügen." – rkgallegos
Welche URL verwenden Sie? '~/customer/details/foobarunnecessary-5' und' public ActionResult Details (String-ID) 'ergeben in dieser Controller-Aktion' id = 5'.Beachten Sie auch, dass '\ d 'eine ** einzelne ** Ziffer bedeutet. Wenn Sie '~/customer/details/foobarunnecessary-123' verwenden und immer noch die Standardroute am Ende haben (' {controller}/{action}/{id} '), passt diese Standardroute und nicht Ihre benutzerdefinierte Route und Sie erhalten in Ihrer Controller-Aktion "id = foobarunnecessary-123". –
Die End-URL, zu der wir gelangen möchten, ist ~/Person/unnötigeinfo-42 und die Anzahl der Ziffern variiert und kann zwischen 1 und 6 oder mehr liegen. – rkgallegos