在浏览mvc中的最佳实践时,我发现DomainModel!= ViewModel
所以,如果我要求显示所有员工的详细信息,如姓名,年龄,地址。 我有一个EmployeeModel类即域类,它具有Id,Name,Age,Addresss,Department等属性。在我的视图中,我只需要显示名称,年龄,地址,所以我创建一个特定于EmployeeViewModel的视图,其中包含名称,年龄,地址等支持,并将其映射到带有者自动控制器或控制器中的某些东西的EmployeeModel? 或者我可以在EmployeeViewModel中重用现有的EmployeeModel 即在EmployeeViewModel中创建一个EmployeeModel属性? 什么是最佳做法?
public class EmployeeModel
{
public int EmployeeId {get ; set}
public string Name{get ; set}
public string Age{get ; set}
public string Department{get ; set}
}
那么我会像这样创建一个ViewModel吗?
public class EmployeeViewModel
{
public string Name{get ; set}
public string Age{get ; set}
public string Department{get ; set}
}
或者我会创建一个这样的viewmodel吗?
public class EmployeeViewModel
{
public EmployeeModel employeeModel {get; set;}
}
由于
答案 0 :(得分:2)
如果您的视图很复杂,请创建与您的域/实体模型分开的视图模型。
不要试图将您的域模型封装在视图模型中;我发送的具有视图模型的ups是视图的绑定和逻辑封装是微不足道的,并且针对您的视图进行了定制。包含域模型的那一刻,事情变得复杂。
哦,查找自动播放器。这将消除一些(不是全部)映射疼痛。
答案 1 :(得分:0)
我会使用ViewModel中的属性。它使您的模型更清洁。您可以在ViewModel中处理验证。它还可以使ViewModel清除不必要的属性和关系(在某些情况下)。
public class EmployeeViewModel
{
[Requried]
public string Name{get ; set}
public string Age{get ; set}
public string Department{get ; set}
}