5

OnActionExecutedメソッドが実装されたActionFilterAttributeを作成しました。つまり、Actionメソッドの後に実行されます。ただし、特定の条件では、OnActionExecutedを実行しないようにします。

Actionメソッドから、ActionFilterが実行されないようにするにはどうすればよいですか?

今のところ、私はこれを作りました:

アクションメソッドについて:

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 に答える