2017-05-15 4 views
0

こんにちは私のC#コントローラのカスタムフィルタ属性があります。MVCフィルタ属性 - フィルタパラメータとしての複数のオプション

[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を送信できるようにすることです。ユーザタイプがAdminAccountingまたはStandardは私が私のフィルタで私のロジックを行うと、プロセスを継続させることができている場合

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

その方法:たとえば

はこのようなものを設定します。

ヒント?

答えて

0

あなたはこのような何か、そのために、配列を使用することができます。

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

注:

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

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

次に、あなたはこのようにそれを使用することができますあなたが使用する必要はありませんparamsあなただけでもできます

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

ありがとう – VAAA

関連する問題