2010-12-09 69 views
3

現在我正在將Web應用程序轉換爲MVC 2網站。我有一個基礎控制器,所有其他控制器都繼承自它。我有一些業務邏輯放置在重寫的Execute方法中,如果需要的話,會將用戶重定向到一個操作。如何在基礎控制器類中使用RedirectToAction?

每個控制器操作都需要運行這個相同的邏輯,我不想在每個操作方法中都對我的函數進行調用。我想要一個放置代碼的中心位置。在舊網站中,我在主頁面加載事件中運行了此邏輯,但將此邏輯轉換爲MVC 2一直頗具挑戰性。

回答

2

您需要在返回的ActionResult上調用ExecuteResult方法。

另外,您應該覆蓋ExecuteCore而不是Execute。否則,你將失去ControllerContext

順便說一下,你應該考慮writing an ActionFilterloading it dynamically

+0

我喜歡ActionFilters的概念。這一定會成爲未來的實施。謝謝(你的)信息。 – Matt 2010-12-10 16:52:40

0

根據代碼需要運行的時間,可以覆蓋基本控制器類中的OnActionExecuting和/或OnActionExecuted方法。

+0

他重寫`ExecuteCore`。 – SLaks 2010-12-09 04:02:24

0

只需將代碼放在您的每個控制器中。 (施工前)

protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
{ 
    base.Initialize(requestContext); 
    //You function here 
} 

請記住在一個班級編寫您的功能。如果發生任何修改,則不必再次更改控制器。

相關問題