Вы можете использовать инжекцию конструктора в свой класс связывания модели, а также наследовать от DefaultModelBinder.
public class MyModelBinder : DefaultModelBinder
{
IContentRepository ContentRepository;
public MyModelBinder(IContentRepository contentRepository)
{
this.ContentRepository = contentRepository;
}
При использовании пользовательских связывателей моделей вы регистрируете их в Application_Start () следующим образом:
protected void Application_Start()
{
System.Web.Mvc.ModelBinders.Binders.Add(
typeof(MyModel), new MyModelBinder(contentRepository)
);
Теперь, когда вы используете IoC, вам нужно помнить о времени жизни ваших объектов. Когда вы используете IoC с контроллерами, они существуют для каждого веб-запроса. Поэтому, если вы добавляете репозиторий, любые подключения к данным или сеансы OR / M будут существовать только в течение этого короткого времени.
При использовании связывателя моделей это в основном долгоживущий синглтон (Application_Start ()). Поэтому убедитесь, что ваш репозиторий работает в обоих случаях.