HttpContext.Current与ActionExecutingContext

时间:2012-02-10 21:40:58

标签: asp.net-mvc-3 action-filter

如果我正在编写像这样的ActionFilter

public override void OnActionExecuting(ActionExecutingContext filterContext)

在此方法中,我还可以通过HttpContext.Current访问当前上下文。我只是想知道这两种情况之间的区别是什么?

1 个答案:

答案 0 :(得分:3)

来自article过滤器:

  

当您实施OnActionExecuted方法时,您将结束   接收ResultExecutedContext类型的实例。除了让   你可以访问currentControllerContext,你也会得到   

的属性      
      
  • 让ActionResult(属性Result)负责生成返回给客户端的响应;

  •   
  • 查看处理是否被取消(例如,在OnActionExecuting方法中设置ActionExecuting上下文的Result属性时会发生这种情况)。您可以从已取消的属性中获取此信息;

  •   
  • 获取对处理过程中可能生成的异常的引用(正如您所料,这是   通过Exception属性提供);

  •   
  • 表示您已处理异常(属性ExceptionHandled)。

  •   
     

... ResultExecutingContext 与...略有不同   我们已经谈过ActionExecutingContext。如果您构建其中之一   过滤器,然后您可以通过设置取消取消进一步处理   在OnResultExecuting方法中将属性设置为true 。请注意   当发生这种情况时,您的视图将不会被调用而您最终不会被调用   生成通常发送回客户端的HTML(我是   假设一个简单的情况,你有一个生成HTML的视图。如   我们会看到,你也可以有一个生成JSON的视图......)。