【发布时间】:2012-10-26 12:08:00
【问题描述】:
我对 viewModel 中的属性组织有疑问。据我了解,viewmodel 应该尽可能简单,它应该做的主要事情是将数据绑定到视图。
问题是如何区分视图模型和 BL 模型中的属性。 我的意思是,例如,我有一个 BL 模型,例如:
public class UserDetailsModel
{
public string UserName {get;set;}
public string SomeInfo{get;set;}
public string AnotherInfo{get;set;}
public string Anything{get;set;}
public string Something {get;set;}
...
}
然后我有另一个 BL 模型说:
public class UserInfoModel
{
public string Info1{get;set;}
public string Info2{get;set;}
public string Info3{get;set;}
public string Info4{get;set;}
public string Info5 {get;set;}
...
}
现在的问题是创建应该具有两个 BL 模型数据的 ViewModel 的最佳实践是什么。
1) 复制 2 个模型的属性,并使用默认模型绑定将数据从视图传输到控制器,然后从 ViewModels 并通过存储库更新数据创建 BL 模型?在这种情况下,我们有代码重复...
2) ViewModel 应该类似于:
public class UsersIdentificationViewModel
{
public UsersIdentificationViewModel()
{
UserInfoModel = new UserInfoModel();
}
public UserInfoModel UsersInfo { get; set; }
public UserDetailsModel UserDetails { get; set; }
}
默认绑定在这种情况下不起作用(如果我弄错了,请纠正我),我应该编写自定义模型绑定器或类似的东西......哪种方法更适合单元测试,或者也许还有另一种方法?
【问题讨论】:
-
您的选项 2 会起作用。支持嵌套视图模型。你试过了吗?
-
我会试试这个方法,谢谢
标签: c# asp.net-mvc-3 viewmodel asp.net-mvc-viewmodel