0

コントローラーを IoC 実装に登録できる場合、IoC コンテナーから ModelView を作成できないのはなぜですか?

現在、次のコントローラーの IoC インジェクションに Autofac 1.4 を使用しています。

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

ビューモデルのオブジェクト ファクトリとしてコンテナーを使用するように MVC に指示する方法がわかりません。

4

1 に答える 1

1

コントローラーにはそれぞれ独自の ViewModel を持つ複数のビューがある可能性が高いため、通常はコンストラクター インジェクションを使用してそれらを作成することはありません。

したがって、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);
}
于 2010-04-08T20:27:06.440 に答える