2009-01-19 11 views
7

Ich habe einige POST-Aktionen auf meinem Controller, die von einem Paar GET-Aktionen betroffen sind. Wenn die Validierung fehlschlägt, möchte ich die Ansicht der Aktion rendern, von der der POST stammt. Zum Beispiel:ASPNET MVC: Weg, um die Route des Referer (sic) herauszufinden?

~/Konten POSTs zu ~/Konten/deaktivieren - "index" -Ansicht auf Validierungsfehler machen ~/Konten/Profile Posts zu ~/Konten/deaktivieren - machen "Profil" Blick auf Validierungsfehler

ich kann die Referer (sic) von Server-Variablen erhalten und analysieren sie die Aktion, um herauszufinden, aber war es der Hoffnung, würde entweder etwas, dass gebaut sein tut, was ich will, oder jemand anderes hat bereits das könnte ich das getan Krippe aus.

Es scheint, die ControllerContext.RouteData Eigenschaft nur Informationen über die aktuelle Anforderung hat, nicht die verweis (sic) Anfrage ...?

Ich bin auf ASP.NET MVC Beta.

+0

Ich würde auch gerne wissen, ob es ein Weg, um die Strecke ohne einen HTTP-Kontext zu erhalten. –

Antwort

2

MVC Contrib eine Erweiterungsmethode auf String enthält eine Strecke (insbesondere in here) zu erhalten. Theoretisch lassen würde dies Sie

RouteData referrer = Request.UrlReferrer.PathAndQuery.Route(); 

oder natürlich tun, dass in einer Verlängerung Methode einpacken auf Httprequest, so dass Sie nur

tun können
RouteData referrer = Request.ReferrerRoute(); 

Allerdings ist es für Unit-Tests bestimmt und verwendet Rhino Verhindert das Erstellen der HttpContextBase, die von GetRouteData() benötigt wird. Die gute Nachricht ist, dass es scheinbar nur sehr wenig Spaß macht, damit Sie Rhino Mocks vermeiden können, wenn Sie Ihre eigene FakeHttpContext-Klasse erstellen, die von HttpContextBase abgeleitet ist.