Controller上的ExecuteCore / Execute / Initialize有什么不同?

时间:2012-05-28 14:45:06

标签: c# asp.net asp.net-mvc

ASP.NET MVC中的

ControllerBase包含三种方法:

我找不到很多关于这些的信息。建议使用Initialize代替Execute。谁能知道这些方法的目的吗?在这种情况下,他们应该根据良好做法使用?

1 个答案:

答案 0 :(得分:3)

Execute方法来自IController接口并且所有控制器都拥有。在默认实现(ControllerBase)中,Execute方法首先调用Initialize方法,然后调用ExecuteCore方法。 Initialize方法是上下文可用的地方。这是管道执行中最早的方法,您可以在其中访问与HttpContext相关的内容。例如,如果您尝试在控制器的构造函数中访问它,您将获得NRE。 ExecuteCore方法负责加载TempData,在给定action路由数据值的情况下查找并执行正确的操作,最后保存TempData。