ASP.NET MVC 3 アプリケーションがあります。
私は、、、を持っModelてViewModelいViewますController。
NinjectIoCとして使用しています。
MyControllerは aを使用してViewModelにデータを渡しますView。
Services (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。