2012-01-11 126 views
1

我有关于在视图模型中提取数据的问题。asp.net mvc视图模型和提取模型类中的数据

,比如我有视图模型:

public class EmployeeCreateVM 
{ 
    public Employee Employee { get; set; } 
    public List<EmployeeState> EmployeeStates { get; set; } // dropdownlist data 
    public List<EmployeeType> EmployeeTypes { get; set; } // dropdownlist data 

    public EmployeeCreateVM() 
    { 
     EmployeeStates = ... 
     EmployeeType = ... 
    } 
} 

我的问题是关于设计视图模型,特别是取数据。 对于我目前的项目,我从控制器读取数据,例如:

[Get] 
EmployeeCreateVM model = new EmployeeCreateVM(); 
model.EmployeeStates = _repository.... 

[Post] - again 
model.EmployeeStates = _repository.... 

是不好的做法,直接从视图模型类获取数据?

感谢

回答

1

是的,因为它违反了关注点分离。如果以后需要更改数据访问方法,则不再位于单一位置(控制器),而是位于使用该存储库的每个视图模型中。

有更多的讨论在这里: What to put in your ViewModel

+0

感谢有趣的联系。在我的应用程序中,我使用DI,所以如果我更改数据访问方法,我只需编写其他实现我的存储库类并将其设置在DI configi – Mennion 2012-01-11 13:53:26

+1

@Mennion即使如此,你不应该在构造函数中使用它;视图模型(以及所有类)应该做一件事。想象一下,你只想将某些'EmployeeTypes'返回给你的控制器/视图,这将需要你编辑你的'EmployeeCreateVM'类,这感觉不对。 – wal 2012-01-11 14:07:35

+0

@Wal - 是的,读取vm类中的数据对我来说是不自然的。但我喜欢DRY的原则,并获取vm在获取和发布行动是不是干... – Mennion 2012-01-11 14:23:17

相关问题