现在我正在将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