【发布时间】:2014-08-23 05:02:12
【问题描述】:
在浏览 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}
}
或者我会创建这样的视图模型吗?
public class EmployeeViewModel
{
public EmployeeModel employeeModel {get; set;}
}
谢谢
【问题讨论】:
-
viewmodel 非常适合在我们想要合并两个或多个模型或模型复杂的情况下使用。在您的情况下,您只能创建一个简单的模型...
-
嗨,这个例子只是为了说明,我的观点会变得复杂。这就是我发布这个的原因?
-
那么第三种情况最好...
-
我认为第二种情况最好。如果我们按照上面的示例进行,我的视图中只需要 3 个属性(姓名、年龄、部门)。因此,如果我们按第 3 种情况进行分析,您会直接将具有 4 个属性的模型暴露给您的视图,对吗?所以我们可能会间接地将我们的视图模型与模型混合在一起??
-
最好只使用您的属性保持干净的
ViewModel。这样你就可以保持你的model干净并在你的ViewModel中添加你的验证规则。
标签: asp.net-mvc model viewmodel