2012-08-24 48 views
0

OnActionExecuting爲控制器,我試圖做一個永久性的重定向。代碼如下所示:如何在基本控制器的OnActionExecuting方法中重定向

protected override void OnActionExecuting(ActionExecutingContext filterContext) { 
    var resolvedUrl = "http://www.cnn.com"; 
    filterContext.Result = new RedirectResult(resolvedUrl); 
    filterContext.Result.ExecuteResult(filterContext); 
    return; 
} 

它不會立即重定向,因爲這種方法是在基類和return語句後,繼承類的OnActionExecuting方法被調用。

問題:我該如何做重定向並在那裏停下來,而不是在繼承類中做任何事情。謝謝。

注意:在子類(從基地繼承的)中,我在其OnActionExecuting中有base.OnActionExecuting(filterContext);

回答

0

您不應該在操作過濾器中調用ExecuteResult()。將filterContext.Result設置爲非空值足以防止MVC管道調用其他過濾器。

子類的類型應該改爲改爲:

base.OnActionExecuting(filterContext); 
if (filterContext.Result != null) { 
    return; // something got short-circuited 
} 
相關問題