2010-01-14 11 views
7

Sto chiamando un metodo statico all'interno del mio livello di business logic che, per gli scopi che non menzionerò qui, deve reindirizzare se stesso piuttosto restituendo le informazioni al controller per fare il reindirizzamento.Reindirizza la pagina mvc asp.net dalla classe logica business

I figura Ho bisogno di utilizzare l'oggetto HttpContext ma sto lottando con la creazione del percorso. Non posso semplicemente fare context.Response.Redirect ("someController/someMethod) perché ho bisogno di includere i parametri per il controller di azione a cui sto inviando l'utente.

Supponendo che questo è corretto:

HttpContext context = HttpContext.Current; 

Qualcuno può fornire un aiuto di sintassi con il modo di creare un percorso utilizzando un oggetto come:

new { Controller = "MyController", action = "Index", OtherParm="other value" } 

TIA

risposta

11

Molto brutto, anti -MVC, non fare nel livello aziendale, ecc ... ma dal momento che stai chiedendo:

var context = new RequestContext(
    new HttpContextWrapper(System.Web.HttpContext.Current), 
    new RouteData()); 
var urlHelper = new UrlHelper(context); 
var url = urlHelper.Action("Index", new { OtherParm = "other value" }); 
System.Web.HttpContext.Current.Response.Redirect(url); 
+0

Inizialmente ho risposto ma cancellato quando ho visto il tuo, ho concordato molto contro MVC ma meglio della mia risposta – Pharabus

+0

grazie mille. L'ho fatto funzionare usando il tuo campione come guida ... l'ho fatto in modo un po 'diverso, ma non avrei potuto farlo senza la tua assistenza. Fondamentalmente sto facendo un controllo di sicurezza contro il database e lanciando un'eccezione sul BLL se non passa il che è il motivo per cui ho bisogno di reindirizzare da lì. Dite molto anti-MVC .... dove suggerireste di mettere questo controllo per far sì che lanci un'eccezione personalizzata? Sul controller? – Kyle

+0

Ti suggerisco di lanciare l'eccezione nel BL, catturandola nel controller ed eseguire il reindirizzamento ** nel ** controller. –

Problemi correlati