Asp.net

System.Web.Mvc.Controller 初始化

  • February 25, 2013

我有以下基本控制器…

public class BaseController : Controller
{

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

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

       base.Initialize(requestContext);

   }

}

基本上,我所有的控制器都將派生自 BaseController,如果某個值為 true,它將重定向它們。但是,這段程式碼不起作用!!!呼叫了 RedirectToAction,但在 Initialize 方法完成後,它將繼續移動到最初呼叫的控制器。

那有意義嗎??

非常感謝,

ETF 費爾法克斯。

我認為您正在覆蓋錯誤的方法。嘗試使用 OnActionExecuting 或 OnActionExecuted。

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

我不確定這是否是你想要的,但試試這個:

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

引用自:https://stackoverflow.com/questions/1679405