現在我正在將Web應用程序轉換爲MVC 2網站。我有一個基礎控制器,所有其他控制器都繼承自它。我有一些業務邏輯放置在重寫的Execute方法中,如果需要的話,會將用戶重定向到一個操作。如何在基礎控制器類中使用RedirectToAction?
每個控制器操作都需要運行這個相同的邏輯,我不想在每個操作方法中都對我的函數進行調用。我想要一個放置代碼的中心位置。在舊網站中,我在主頁面加載事件中運行了此邏輯,但將此邏輯轉換爲MVC 2一直頗具挑戰性。
現在我正在將Web應用程序轉換爲MVC 2網站。我有一個基礎控制器,所有其他控制器都繼承自它。我有一些業務邏輯放置在重寫的Execute方法中,如果需要的話,會將用戶重定向到一個操作。如何在基礎控制器類中使用RedirectToAction?
每個控制器操作都需要運行這個相同的邏輯,我不想在每個操作方法中都對我的函數進行調用。我想要一個放置代碼的中心位置。在舊網站中,我在主頁面加載事件中運行了此邏輯,但將此邏輯轉換爲MVC 2一直頗具挑戰性。
您需要在返回的ActionResult
上調用ExecuteResult
方法。
另外,您應該覆蓋ExecuteCore
而不是Execute
。否則,你將失去ControllerContext
。
順便說一下,你應該考慮writing an ActionFilter和loading it dynamically。
根據代碼需要運行的時間,可以覆蓋基本控制器類中的OnActionExecuting和/或OnActionExecuted方法。
他重寫`ExecuteCore`。 – SLaks 2010-12-09 04:02:24
只需將代碼放在您的每個控制器中。 (施工前)
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
//You function here
}
請記住在一個班級編寫您的功能。如果發生任何修改,則不必再次更改控制器。
我喜歡ActionFilters的概念。這一定會成爲未來的實施。謝謝(你的)信息。 – Matt 2010-12-10 16:52:40