2010-12-09 67 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 
} 

请记住在一个班级编写您的功能。如果发生任何修改,则不必再次更改控制器。

相关问题