2012-11-20 82 views
3

我有這樣的自定義操作過濾器:ActionFilterAttribute不叫

public class PermissionChecker: ActionFilterAttribute 
{ 
    private int _permissionId { get; set; } 
    private IUserSelectorService _userService { get; set; } 

    public PermissionChecker(int permissionId) 
    { 
     _permissionId = permissionId; 
     _userService = new UserSelectorService(); 
    } 

    public PermissionChecker(int permissionId, IUserSelectorService userService) 
    { 
     _permissionId = permissionId; 
     _userService = userService; 
    } 

    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 
     base.OnActionExecuting(actionContext); 
    } 
} 

,我把它在我的行動:

public class HomeController : Controller 
{ 
    [PermissionChecker(1)] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

,但它不工作!即使在PermissionChecker的構造函數中,代碼也不會傳入onActionExecuting。

回答

5

您OnActionExecuting的簽名是不正確的,它應該有ActionExecutingContext

提供了ActionFilterAttribute類的ActionExecuting方法的上下文。

public override void OnActionExecuting(ActionExecutingContext filterContext){ 
    base.OnActionExecuting(filterContext); 
} 
+0

但我使用MVC 4,沒有3 – MuriloKunze

+0

不是MVC3具體的,它適用於mvc4以及 – dove

+0

添加鏈接參考MSDN – dove