/ / ASPNET MVC: modo di capire il percorso del referer (sic)? - asp.net-mvc, reindirizzamento, routing, referer

ASPNET MVC: modo di capire il percorso del referer (sic)? - asp.net-mvc, reindirizzamento, instradamento, referer

Ho alcune azioni POST sul mio controller che sono colpite da una coppia di azioni GET. Quando la convalida fallisce, voglio rendere la vista dell'azione da cui proviene il POST. Per esempio:

~ / account POST per ~ / account / disabilita - esegue il rendering della vista "indice" sull'errore di convalida ~ / account / profilo POST per ~ / account / disabilita - esegue il rendering della vista "profilo" sull'errore di convalida

Posso ottenere il referer (sic) davariabili del server e analizzarlo per capire l'azione, ma speravo che ci fosse qualcosa incorporato che fa quello che voglio, o qualcun altro ha già fatto questo da cui potrei culla.

Sembra che la proprietà ControllerContext.RouteData abbia solo informazioni sulla richiesta corrente, non sulla richiesta di riferimento (sic) ...?

Sono su ASP.NET MVC beta.

risposte:

2 per risposta № 1

MVC Contrib include un metodo di estensione su String per ottenere un percorso (in particolare, qui). In teoria questo ti lascerebbe fare

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

o, naturalmente, racchiudilo in un metodo di estensione su HttpRequest in modo da poterlo fare

RouteData referrer = Request.ReferrerRoute();

Tuttavia, è inteso per test unitari e usiRhino prende in giro per creare l'HttpContextBase richiesto da GetRouteData (). La buona notizia è che sembra cavarsela deridendo molto poco, quindi potresti essere in grado di evitare Rhino Mock se crei la tua classe FakeHttpContext derivata da HttpContextBase.