我有一个 ASP.NET MVC 3 应用程序。
我有一个Model
, ViewModel
, View
, Controller
.
我Ninject
用作 IoC。
我Controller
使用 aViewModel
将数据传递给View
.
我已经开始使用Service
s (具体和接口类型)从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
真的真的很大!
我将 1ViewModel
用于创建/编辑操作。我不重复使用ViewModel
其他地方。