我对 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; }
}
默认绑定在这种情况下不起作用(如果我弄错了,请纠正我),我应该编写自定义模型绑定器或类似的东西......哪种方法更适合单元测试,或者可能有另一种方法?