5

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

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

现在,我做了这个:

关于 Action 方法:

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

在 ActionFilter.OnActionExecuted() 上:

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

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

4

1 回答 1

3

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

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

ControllerActionInvoker 类的代码

于 2013-02-23T15:36:14.393 回答