2009-11-05 14 views
8

tengo el siguiente controlador base ...System.Web.Mvc.Controller Inicializar

public class BaseController : Controller 
{ 

    protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
    { 

     if (something == true) 
      RedirectToAction("DoSomething", "Section"); 

     base.Initialize(requestContext); 

    } 

} 

Básicamente, todos mis controladores se derivan de BaseController, y volverá a dirigir si un determinado valor es verdadero. Sin embargo, este código no funciona! Se realiza la llamada a RedirectToAction, pero una vez finalizado el método Initialize, simplemente pasará al controlador originalmente llamado.

¿Tiene sentido?

Muchas gracias,

ETFairfax.

Respuesta

15

Creo que está sustituyendo método equivocado. Pruebe con OnActionExecuting o OnActionExecuted.

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (something == true) 
      filterContext.Result = RedirectToAction("DoSomething", "Section"); 
     else 
      base.OnActionExecuting(filterContext); 
    } 
+1

Nice one Misha N gracias por la respuesta. Para cualquier otra persona que pueda leer esto, la respuesta es correcta, pero Misha ha escrito el parámetro incorrecto; debería ser un objeto ActionExecutingContext que se pasa. Aparte de eso, ¡es perfecto! Gracias otra vez Misha. – ETFairfax

+0

Ups, arreglado eso. Me alegro de poder ayudar a ETFairfax –

-1

no estoy seguro de si esto es lo que quiere, pero intente esto:

protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
{ 
    if (something == true) 
     RedirectToAction("DoSomething", "Section"); 
    else 
     base.Initialize(requestContext); 
}