MVC过滤器属性 - 多个选项作为过滤器参数

时间:2017-05-15 13:58:59

标签: c# asp.net-mvc-4 action-filter

您好我的C#控制器具有自定义过滤器属性。

 [SessionExpireFilterAttribute(UserType = UserTypes.Admin)]

我的过滤器就像这样开始:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
    public class SessionExpireFilterAttribute : ActionFilterAttribute
    {
        public App.Model.UserTypes UserType { get; set; }

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpContext ctx = HttpContext.Current;

我希望能够发送多个UserTypes,因此对此控制器的权限不仅仅与一个相关联。

例如,想要设置如下内容:

[SessionExpireFilterAttribute(UserType = UserTypes.Admin || UserTypes.Accounting || UserTypes.Standard)]

这样,如果用户类型为AdminAccountingStandard,我可以在我的过滤器中执行我的逻辑并让该过程继续。

  

有任何线索吗?

1 个答案:

答案 0 :(得分:0)

您可以使用数组,如下所示:

public App.Model.UserTypes[] UserTypes { get; set; }

public SessionExpireFilterAttribute(params App.Model.UserType[] values) {
    UserTypes = values;
}

然后你可以像这样使用它:

[SessionExpireFilterAttribute(UserTypes.Admin, UserTypes.Accounting, UserTypes.Standard)]

注意:您不必使用params,也可以执行

[SessionExpireFilterAttribute(new [] {UserTypes.Admin, UserTypes.Accounting, UserTypes.Standard})]