2010-08-09 13 views
15

Sto tentando di eseguire un reindirizzamento da un attributo del metodo. Sembra funzionare:ASP.NET MVC reindirizzamento dall'attributo

public class MyAttribute: ActionFilterAttribute { 
    [..] 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     [..] 
     filterContext.HttpContext.Response.Redirect(urlToRedirectTo, true); 
     [..] 

L'unico problema è che il reindirizzamento viene eseguito dopo la fine del metodo è attaccato a, mentre vorrei il reindirizzamento per impedire l'esecuzione del metodo.

Qualsiasi aiuto? Grazie

risposta

29

È possibile impedire l'esecuzione del metodo di azione assegnando ActionResult a filterContext.Result. Ad esempio:

filterContext.Result = new RedirectResult(urlToRedirectTo); 
-2

è necessario aggiungere

filterContext.HttpContext.Response.End(); 

EDIT: La parte superiore è sbagliato il fondo è giusto

questo dovrebbe funzionare

filterContext.Result = new RedirectResult(UrlToRedirectTo); 

se si torna un ActionResult poi diventa eseguito instaurato dell'azione stessa, quindi questo dovrebbe saltare l'azione.

+0

Penso che termini la risposta mettendo 'true' come secondo parametro nel metodo' HttpResponse.Redirect' .. –

Problemi correlati