自定义ModelBinder生命周期和依赖注入

时间:2012-10-06 05:45:15

标签: c# asp.net-mvc ninject modelbinders

  

可能重复:
  Inject a dependency into a custom model binder and using InRequestScope using Ninject

我正在尝试将NHibernate会话绑定到自定义模型绑定器:

由于自定义模型绑定器似乎是单例,我认为我需要关注线程安全性。这是我目前的IoC代码:

kernel.Bind<ISession>().ToProvider<SessionProvider>().InRequestScope()
    .OnActivation(x => ServiceModelBinder.Service = kernel.Get<IServiceService>());

在我的活页夹中,我使用ThreadStatic属性修饰了静态服务字段,以避免会话出现并发问题。

这是一个好主意吗?

是否有更好的方法将每个请求作用域对象注入视图模型?或者我应该不担心它在纸上看起来有多丑,只需从DependencyResolver获取当前会话?

1 个答案:

答案 0 :(得分:2)

远离ASP.NET中的ThreadStaticAttribute - 唯一正确的方法是将内容放入HttpContext.Items,但是在你去之前总是有很多更好的方法可以尝试 像这样的低级别。

这里的关键问题是你正在做一个错误的假设 - 模型绑定在请求之间共享。