【发布时间】:2015-12-17 19:51:10
【问题描述】:
我在mvc4、mvc5中使用unity然后ninject。 我以这种方式将服务或 dbcontext 作为公共属性注入到操作过滤器中:
public class MyActionFilterAttribute: FilterAttribute,IActionFilter
{
[Inject]
public IDbContext DbContext { get; set; }
[Inject]
public IProductService ProductService { get; set; }
public void OnActionExecuting(ActionExecutingContext filterContext)
{
Debug.WriteIf(DbContext == null, "db context is null");
Debug.WriteIf(ProductService == null, "productservice is null");
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{ }
}
}
如果我注册一个全局过滤器,filters.Add(new MyActionFilterAttribute()); DbContext 和 ProductService 始终为空。
但是,如果我将 [MyActionFilter] 属性标记为 Controller,一切正常。
我想将一些过滤器注册为全局过滤器,请帮忙。
【问题讨论】:
标签: asp.net-mvc-4 dependency-injection asp.net-mvc-5