Ich versuche, richtige REST
URLs mit MVC
zu verwenden. Dazu habe ich das Standard-Routing von:
bis
%Vor%also statt:
%Vor%gibt es jetzt
%Vor%ActionLink scheint in Ordnung zu sein, aber der folgende Code in CustomerController:
%Vor% endet in URL /Customer/23/Search
. Es sollte zwar nach /Customer/Search
gehen. Irgendwie erinnert es sich 23 (id)
.
Hier ist mein Routing-Code in global.cs
%Vor% Wenn ich die beiden Funktionen umschalte, beginnt RedirectToAction
zu arbeiten, aber mit:
Erzeugt jetzt /Customer/Approve?id=23
anstelle von /Customer/23/Approve
.
Ich könnte direkte URLs wie ~/Customer/23/Approve
anstelle von ActionLink
und RedirectToAction
angeben, würde aber lieber bei Funktionen bleiben, die von MVC
bereitgestellt werden.
Übergeben Sie in Ihrem Controller ein neues (leeres) RouteValueDictionary
%Vor%Und hier:
%Vor%Ich weiß nicht einmal, wie es den Kundencontroller abholen kann, da Sie ihn nirgends angeben. Versuchen Sie, dem ActionLink-Helper den Controller und die Aktion bereitzustellen.
Wenn Sie RedirectToAction () verwenden, verwendet MVC intern die vorhandenen Routendaten (einschließlich des ID-Werts), um die URL zu erstellen. Auch wenn Sie ein RouteValueDictionary von null übergeben, werden die vorhandenen Routendaten mit den neuen Daten des leeren Routenwerts zusammengeführt.
Der einzige Weg, den ich sehen kann, ist RedirectToRoute () zu verwenden, wie folgt:
%Vor%Ratgeber
Entfernen Sie diesen Teil:
%Vor%kann das Problem lösen; Wenn Sie "id" als optionalen Parameter definieren und die Karte "Default" haben, sind "Default" und "AdminRoute" gleich! Grüße.
Ich hatte ein ähnliches Problem. Routenwerte, die an meine Controller-Aktion übergeben wurden, wurden wiederverwendet, als ich versuchte, den Benutzer mit RedirectToAction umzuleiten, auch wenn ich sie nicht im neuen RouteValueDictionary angegeben hatte. Die Lösung, die ich gefunden habe (nach dem Lesen (cellskellben's post) mit dem RouteData strong> für die aktuelle Anfrage. Auf diese Weise konnte ich verhindern, dass MVC Routenwerte zusammenführte, die ich nicht angegeben hatte.
In Ihrer Situation könnten Sie vielleicht so etwas tun:
%Vor%Ich hatte ein ähnliches Problem und konnte es lösen, indem ich die ID zur Standardroute hinzufügte.
%Vor%Wenn Ihre Standardroute keine ID enthält, können Sie auch versuchen:
%Vor%Tags und Links asp.net-mvc-3 asp.net url-routing asp.net-mvc-routing