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 № 1MVC 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.