ASP.NET MVC 3 アプリケーションがあります。
私は、、、を持っModel
てViewModel
いView
ますController
。
Ninject
IoCとして使用しています。
MyController
は aを使用してViewModel
にデータを渡しますView
。
Service
s (concrete および interface 型) を使用して から情報を取得ViewModel
し、データベースに対してクエリを実行して操作するようになりました。
同じService
ものをセットアップに使用できますViewModel
か? それとも、これはデザイン パターンの粒子に反しているのでしょうか。
ViewModel
つまり、Service
レイヤー内の設定を抽象化できますか?
シナリオ
シナリオは次のとおりです。myModel
には other への参照がたくさんあるModels
ため、コントローラーで をセットアップするViewModel
と冗長になり、Controller
がやりすぎていると感じます。だから私は次のようなことができるようにしたい:
var vm = _serviceProvider.SetupViewModel(Guid model1Id, Guid model2Id, /*etc..*/)
のSetupViewModel
関数は次のServiceProvider
ようになります。
public MyModelViewModel SetupViewModel(Guid model1Id, Guid model2Id, /*etc...*/)
{
var vm = new MyModelViewModel();
var model1 = _repository.Model1s.FirstOrDefault(x => x.Id.Equals(model1Id));
var model2 = _repository.Model2s.FirstOrDefault(x => x.Id.Equals(model2Id));
// etc....
vm.Model1 = model1;
vm.Model2 = model2;
return vm;
}
これを行うことで、いくつかの条件を追加することもできます。私の本当に本当に本当に大きくnull
なる心配はありません!!Controller
ViewModel
作成/編集アクションには 1 を使用します。他では再利用しませんViewModel
。