3

我有这个自定义操作过滤器:

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。

4

1 回答 1

5

您的 OnActionExecuting 的签名不正确,它应该有ActionExecutingContext

为 ActionFilterAttribute 类的 ActionExecuting 方法提供上下文。

public override void OnActionExecuting(ActionExecutingContext filterContext){
    base.OnActionExecuting(filterContext);
}
于 2012-11-20T12:28:00.433 回答