我已经定义了一个这样的动作过滤器:
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中用不同的参数定义相同的过滤器类型吗?
答案 0 :(得分:2)
使用AttributeUsage
属性装饰您的操作过滤器,并指定AllowMultiple = true
:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true)]
public class InvokeConditionAttribute : ActionFilterAttribute
{
...
}
现在,您的OnActionExecuting
方法将针对SomeAction
操作触发两次。