我的项目使用通常的存储库模式以及服务和工作单元(所有这些都使用 Ninject 从 NinjectModule 注入依赖项),但我正在尝试从ActionFilterAttribute
在我显示的页面布局中注入一些信息(来自数据库),这样我就不需要弄乱每个控制器上的所有操作。
当我在一个屏幕上保存到数据库并移至下一个屏幕,然后返回到上一个屏幕(使用标准@Url.Action
): The ActionFilterAttribute
为了Index
操作被触发,但对服务和相应存储库(在属性内)的调用会抛出异常,因为DbContext has been disposed
.
访问服务是否存在任何问题,因此,DbContext
从一个ActionFilterAttribute
通过属性注入注入服务时?我想指出的是,我在属性中对服务使用属性注入,因为构造函数接收两个任意参数,具体取决于 Action 方法的签名,因此我唯一的选择是通过属性注入。
如果您需要一些代码,请告诉我,我会更新问题。
我在以下问题中找到了问题的解决方案:将依赖项注入 ASP.NET MVC 3 操作过滤器。这种方法有什么问题吗?
组合马克·西曼的回答是脱衣战士的评论是解决方案。
基本上,我将 ActionFilterAttribute 拆分为一个属性,该属性仅装饰我的操作并保留稍后需要的参数,并且还拆分为一个 ActionFilter,该属性检查操作的自定义属性,如果我的属性存在,则它将我想要的数据从数据库注入到ViewBag。所有内容稍后都会与 Ninject 的 BindFilter 扩展绑定,因此它仅适用于它需要的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)