控制器上的相同类型动作过滤器及其动作方法

时间:2013-12-29 15:51:11

标签: c# asp.net-mvc

我已经定义了一个这样的动作过滤器:

public class InvokeConditionAttribute : ActionFilterAttribute
{
    private ConditionRule conditionRule;

    public InvokeConditionAttribute(ConditionRule conditionRule)
    {
        this.conditionRule = conditionRule;
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // check condition rule
    }
}

参数中的ConditionRule是枚举类型。 然后我创建一个如下控制器:

[InvokeCondition(ConditionRule.Condition1, Order = 1)]
public class AttendanceModificationController : Controller
{
    [InvokeCondition(ConditionRule.Condition2, Order = 2)]
    public ActionResult SomeAction()
    {
        //
    }
}

问题是方法级别过滤器没有调用。

可以在asp.net mvc中用不同的参数定义相同的过滤器类型吗?

1 个答案:

答案 0 :(得分:2)

使用AttributeUsage属性装饰您的操作过滤器,并指定AllowMultiple = true

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true)]
public class InvokeConditionAttribute : ActionFilterAttribute
{
    ...
}

现在,您的OnActionExecuting方法将针对SomeAction操作触发两次。