假设我有一个允许编辑用户详细信息的页面,所以我有一个这样的 ViewModel:
public class UserViewModel {
public string Username { get; set; }
public string Password { get; set; }
public int ManagerId { get; set; }
public string Category { get; set; }
}
因此,在我的 EditUser 操作中,我可以将其通过模型绑定器传回,然后我可以将其映射到域模型:
public ActionResult EditUser(UserViewModel user) {
...
但是,显示表单的页面还需要详细信息,例如经理和类别列表,以便为这些字段提供下拉菜单。它还可能在侧边栏中显示其他用户的列表,以便您可以在正在编辑的不同用户之间切换。
那么我有另一个视图模型:
public class ViewUserViewModel {
public UserViewModel EditingUser { get; set; }
public IEnumerable<SelectListItem> Managers { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public IEnumerable<SelectListItem> AllUsers { get; set; }
}
这是正确的方法吗?他们都是视图模型吗?如果是这样,是否有我应该使用的命名约定,以便我可以区分类似于模型的 VM 和仅包含页面数据的 VM?
我把这一切都搞错了吗?