System.Web.Mvc.Controller Initialize

2019-04-24 01:38发布

i have the following base controller...

public class BaseController : Controller
{

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

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

        base.Initialize(requestContext);

    }

}

Basically, all my controllers will derive from BaseController, and it will redirect them if a certain value is true. However, this code does not work!!! The call to RedirectToAction is made, but after the Initialize method is finished, it will just move on to the originally called controller.

Does that make sense??

Many thanks,

ETFairfax.

2条回答
闹够了就滚
2楼-- · 2019-04-24 01:49

I think you are overriding wrong method. Try with OnActionExecuting or OnActionExecuted.

protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
      if (something == true)
          filterContext.Result =  RedirectToAction("DoSomething", "Section");
      else
          base.OnActionExecuting(filterContext);
    }
查看更多
太酷不给撩
3楼-- · 2019-04-24 01:55

I'm not sure if this is what you want, but try this:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    if (something == true)
        RedirectToAction("DoSomething", "Section");
    else
        base.Initialize(requestContext);
}
查看更多
登录 后发表回答