2013-01-25 131 views
0

我將所有的定義如下所示:從查看移動邏輯控制器和視圖模型

@(Model.Store.EmployeeType.Name == "Manager" ? Model.Store.HQ.Manager.DisplayName : Model.Store.Manager.DisplayName) 

出於我的查看和成視圖模型:

public class ManagerViewModel 
{ 
    public string Manager {get;set;} 
} 

和Controller定義它們:現在

var viewModel = new ManagerViewModel(); 

viewModel.Manager = Model.Store.EmployeeType.Name == "Manager" ? Model.Store.HQ.Manager.DisplayName : Model.Store.Manager.DisplayName; 

return View(viewModel); 

,我認爲我可以做到這一點:

@Model.Manager 

我的問題是 - 這是否違反了瘦身控制器的最佳做法?我有大約30個領域需要這種類型的治療,所以我的控制器將會非常大 - 我正在爲每個領域創建一個新的屬性。

回答

2

不要太擔心premature optimization。我認爲你在這裏是正確的道路,不會擔心太多。

如果您真的擔心「瘦」控制器,您可以從構造函數中填充ViewModel。

public class ManagerViewModel 
{ 

    public ManagerViewModel(ManagerModel model){ 
     // initialize in here 
     this.Manager = model.Store.EmployeeType.Name == "Manager" ? model.Store.HQ.Manager.DisplayName : model.Store.Manager.DisplayName; 
    } 

    public string Manager {get;set;} 
} 
var viewModel = new ManagerViewModel(model); 
return View(viewModel); 
+0

感謝大通。如果我在「詳細信息」頁面上工作,這將如何改變?如果我初始化viewModel中的所有內容,那麼「var manager = db.Managers.Find(id);」走? – RobVious

+0

每個視圖都應該有它自己的ViewModel。因此,您需要一個'ManagersViewModel'(經理名單)和'ManagerViewModel'(單個經理的詳細信息)。 –

+0

ps:我假定您當前的'ManagerViewModel'是一個詳細信息視圖。如果不是,請詳細說明它是什麼。 –

相關問題