我在我的一些控制器上使用了一个动作过滤器,与它的作用无关,它使用Ninject进行依赖注入。我在控制器构造函数和动作过滤器构造函数中设置了断点,我发现对于单个请求,控制器的构造函数被调用一次,动作过滤器被调用8次。以下代码产生的效果与this answer中给出的效果几乎相同。
属性:
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,但我不知道为什么。我真的一直把头发拉过这个,只是希望有人可能以前处理过类似的东西。