2013-02-23 121 views
4

我制作了一个ActionFilterAttribute,它实现了OnActionExecuted方法。这意味着它在Action方法之后运行。 但是,在某些情况下,我希望OnActionExecuted不被执行。Skip OnAction执行执行

我如何从Action方法阻止ActionFilter被执行?

现在,我做了这一点:

在操作方法:

RouteData.Values.Add("CancelActionFilter", true); 

而且在ActionFilter.OnActionExecuted():

if (filterContext.RouteData.Values["CancelActionFilter"] != null) 
{ 
    return; 
} 

但我认为,可能存在一个更优雅的方法。

+1

我编辑了您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 – 2013-02-23 14:47:32

回答

3

OnActionExecuted在ControllerActionInvoker类的InvokeActionMethodFilter方法内调用。

在这个方法里面没有什么可以阻止被执行的动作。我认为你是一个很好的解决方案。

Code of ControllerActionInvoker class

+0

谢谢,很高兴知道! – 2013-02-26 18:07:39