停止继续ASP.NET MVC ActionFilter

Jey*_*han 12 asp.net asp.net-mvc action-filter actionfilterattribute

我在一个动作上有两个自定义ActionFilters.

在第一个actionfilters中,如果不满足条件,我会执行重定向(经典授权).而在另一个我有一个重定向,如果不满足另一个条件(比如角色检查).

但是如果不满足第一个actionFilter,我不想继续第二个actionFilter.这该怎么做?

Lev*_*evi 22

将该filterContext.Result属性设置为任何非空值将停止执行后续过滤器.因此,如果您的第一个过滤器设置filterContext.Result = new RedirectResult(...),则永远不会运行第二个过滤器和操作方法.这就是内置[Authorization]过滤器的工作原理.

  • 我只需要回到一个MVC2项目,所以留下这个以防任何人仍然需要它:如果你想在你的Action中使用`return null`的正常功能,你可以做`filterContext.Result = new EmptyResult(); ` (7认同)