MVC 2, IoC, ModelView и привязка - PullRequest
       14

MVC 2, IoC, ModelView и привязка

0 голосов
/ 08 апреля 2010

Если вы можете зарегистрировать свои контроллеры в своей реализации IoC, то почему вы не можете также создавать свои ModelViews из своего контейнера IoC?

В настоящее время я использую Autofac 1.4 для ввода IoC для контроллеров со следующими параметрами:

ControllerBuilder.Current.SetControllerFactory((IControllerFactory) new AutofacControllerFactory(ContainerProvider));

Я не вижу способа сказать MVC использовать контейнер как фабрику объектов для моих моделей представления, хотя я где-то пропустил?

1 Ответ

1 голос
/ 09 апреля 2010

Поскольку ваш контроллер может иметь несколько представлений, каждое из которых имеет свою собственную ViewModel, вы обычно не создаете их с помощью внедрения contstructor.

Таким образом, вы можете зарегистрировать ваши ViewModel в IoC, но это будет означать предоставление локатора службы в вашем контроллере для получения экземпляра ViewModel.

builder.Register<MyViewModel> ().As<IMyViewModel> ().FactoryScoped ();

и в вашем контроллере

var MyViewModel = ContainerProvider.RequestContainer.Resolve<IMyViewModel> ();

это не типичный способ управления ViewModel для ваших контроллеров, если вы не хотите каким-либо образом сделать их динамичными.

В большинстве случаев вы просто создаете экземпляр вашей ViewModel в своих методах контроллера

public ActionResult Details ()
{
    var model = new MyViewModel ();

    return View (model);
}
...