我有一個ASP.NET MVC 3應用程序。ASP.NET MVC設計模式最佳實踐與服務
我有一個Model
,ViewModel
,View
,Controller
。作爲IoC使用Ninject
。
我的Controller
使用ViewModel
將數據傳遞給View
。
我已經開始使用Service
s(具體和接口類型)從ViewModel
獲取信息,並根據數據庫對其進行查詢以對其進行處理。
我可以使用相同的Service
來設置ViewModel
嗎?或者這是否違背設計模式的五穀?
I.e.我可以在Service
圖層中抽象設置ViewModel
嗎?
情景
的場景是;我的Model
有很多參考Models
,所以當我在控制器中設置ViewModel
它是冗長的,我覺得Controller
做得太多了。所以我想能夠只是像做:
var vm = _serviceProvider.SetupViewModel(Guid model1Id, Guid model2Id, /*etc..*/)
而且在ServiceProvider
的SetupViewModel
功能應該是這樣的:
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
真的真的很大!
我使用1 ViewModel
作爲創建/編輯操作。我不在其他地方重複使用ViewModel
。
如何提供關於您特定架構的更多信息?也許是一個簡短的代碼示例,解釋你想要做什麼? –
我已經編輯了我的問題,但我沒有把它放在它的代碼 –
這聽起來像你重複使用ViewModels是不好的。 – Phill