我在我的一些控制器上使用了一个动作过滤器,与它的作用无关,它使用 Ninject 进行依赖注入。我在控制器构造函数和动作过滤器构造函数中设置了断点,我发现对于单个请求,控制器的构造函数被调用一次,动作过滤器被调用 8 次。以下代码产生的效果与此答案中给出的效果几乎相同。
属性:
public class NotificationAttribute : Attribute { }
public class NotificationActionFilter : IActionFilter
{
private IUnitOfWork _unitOfWork;
public NotificationActionFilter(IUnitOfWork uow)
{
_unitOfWork = uow;
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
// do stuff
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
}
}
捆绑:
kernel.BindFilter<NotificationActionFilter>(FilterScope.Controller, 0).WhenControllerHas<NotificationAttribute>();
控制器:
[NotificationAttribute]
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
}
它总是正好是 8,但我不知道为什么。我真的一直在努力解决这个问题,只是希望有人可能曾经处理过类似的事情。