2009-11-05 42 views
8

我有以下的基本控制器...System.Web.Mvc.Controller初始化

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方法完成之後,它將移動到最初調用的控制器。

這是否合理?

非常感謝,

ETFairfax。

回答

15

我認爲你是錯的覆蓋方法。嘗試使用OnActionExecuting或OnActionExecuted。

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

不錯的一個米沙N感謝您的答案。 對於任何可能閱讀此內容的人來說,答案都是正確的,但是Misha鍵入了錯誤的參數;它應該是一個正在傳遞的ActionExecutingContext對象。除此之外,它是完美的! 再次感謝米莎。 – ETFairfax 2009-11-05 10:07:20

+0

Ups,修正了這個問題。很高興我能幫助ETFairfax – 2009-11-05 10:12:40

-1

我不知道這是否是你想要的,但試試這個:

​​