12

問題なくカスタムアクションフィルターを作成しました。

ただし、実際にメソッドに渡されたパラメーターの一部を使用するようにアクションフィルターを変更したいと思います。

したがって、次の方法がある場合:

[HttpPost]
[MyAttribute]
public ActionResult ViewUserDetails(Guid userId)
{
     // Do something
}

内からuserIdにアクセスするにはどうすればよいMyAttributeですか?直接渡す方法はありますか?

4

2 に答える 2

13

OnActionExecutingアクションパラメータにアクセスできるオーバーライドを試すことができます。

public class MyAttribute: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {    
        if (filterContext.ActionParameters.ContainsKey("userId"))
        {
            var userId = filterContext.ActionParameters["userId"] as Guid;
            if (userId != null)
            {
                // Really?! Great!            
            }
        }
    }
} 
于 2012-08-30T18:51:20.060 に答える
0

から派生しFilterAttributeて実装するカスタム属性を作成できますIAuthorizationFilter

また、ユーザーIDを渡すことなくOnAuthorizationアクセスすることで、メソッド内のユーザー情報を取得できるはずです。filterContext.HttpContext.User.Identity

于 2012-08-30T18:45:40.087 に答える