【发布时间】:2011-06-18 05:02:12
【问题描述】:
我正在使用 asp.net mvc 3、数据注释和自动映射器。
一旦属性通过验证,我希望在视图模型中对属性进行所有注释,我使用自动映射器将其映射回我的域对象。
我有一个视图模型,它具有我想要收集的属性,因为我想从它们生成一个表。以后我也想用它们作为表单来向这个表中添加行。
那我该怎么办?我如何获取这些属性并收集它们?
public class UserViewModel()
{
[Required()]
public string UserName = {get; set;}
[Required()]
public string FirstName = {get; set;}
[Required()]
public string LastName = {get; set;}
}
我想使用这些属性来生成我的表格并用于表格。
我唯一能想到的就是这样做
public class AddUserViewModel()
{
[Required()]
public string UserName = {get; set;}
[Required()]
public string FirstName = {get; set;}
[Required()]
public string LastName = {get; set;}
}
public class UserViewModel()
{
public List<User> Users {get; set;}
public AddUserViewModel {get; set;}
public UserViewModel()
{
Users = new List<Users>();
}
}
所以基本上我将它作为一个单独的视图模型包含在另一个包含用户列表(我的域模型)的视图模型中
这样我就使用我的域模型来生成表和我的 AddUserViewModel 来添加用户。
似乎有点多余,所以我不确定是否有更好的方法。
编辑
我有这样的事情
var viewModel = new UserViewModel();
List<Users> users= UserService.GetAllUsers();
viewModel = Mapper.Map<Users, UserViewModel>(users);
return View("Index", viewModel);
我也试过
var viewModel = new UserViewModel();
List<Users> users= UserService.GetAllUsers();
viewModel.AddUserViewModel = Mapper.Map<Users, AddUserViewModel>(users);
return View("Index", viewModel);
编辑 2
我有这个并且它可以编译但是我得到这个错误
SomeViewModel viewModel = new SomeViewModel ();
List<User> users= userService.GetAllUsers();
viewModel.UserViewModel = Mapper.Map<List<User>, List<UserViewModel>>(users);
return View("Index", viewModel);
Trying to map Domain.User to ViewModels.UserViewModel.
Missing type map configuration or unsupported mapping.
Exception of type 'AutoMapper.AutoMapperMappingException' was thrown.
【问题讨论】:
-
我完全不明白你的问题,也不明白你想要达到的目标。
-
@Darin Dimitrov - 是的,这是一个错字。现在已经纠正了。我试图弄清楚如何在视图模型中继续使用数据注释,但也可能返回我的域对象列表,而无需重复代码两次。现在,Users 对象中的所有内容基本上都是 AddUserViewModel() 中的内容的副本。我可以将注释放在域对象中,但我不想这样做。
标签: c# asp.net-mvc asp.net-mvc-3 viewmodel