2010-08-09 38 views
15

Estoy intentando ejecutar un redireccionamiento desde un atributo de método. Parece que funciona:ASP.NET MVC redirige del atributo

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

El único problema es que el redireccionamiento se ejecuta después del final del método al que está conectado, mientras que me gustaría que la redirección para evitar la ejecución del método.

¿Algún ayuda? Gracias

Respuesta

29

Puede evitar la ejecución del método de acción asignando un ActionResult a filterContext.Result. Por ejemplo:

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

es necesario agregar

filterContext.HttpContext.Response.End(); 

EDIT: La parte superior está mal la parte inferior es correcto

esto debería funcionar

filterContext.Result = new RedirectResult(UrlToRedirectTo); 

Si devuelve un ActionResult luego se pone ejecutado instaed de la acción en sí, así que esto debería omitir la acción.

+0

Creo que finaliza la respuesta poniendo 'true' como un segundo parámetro en el método' HttpResponse.Redirect' .. –

Cuestiones relacionadas