Estoy usando asp.net mvc 3, anotaciones de datos y mapeador automático.¿Cómo hacer las listas en un modelo de vista? + dataannotaciones
Quiero tener todas mis anotaciones en las propiedades en mi modelo de vista una vez que las propiedades pasan la validación Utilizo el mapeador automático para asignarlo de nuevo a mi objeto de dominio.
Tengo un modelo de vista que tiene propiedades de las que quiero tener una colección, ya que quiero generar una tabla a partir de ellas. También quiero usarlos más tarde para usarlos como formulario para agregar filas a esta tabla.
Entonces, ¿qué debo hacer? ¿Cómo tomo estas propiedades y hago una colección de ellas?
public class UserViewModel()
{
[Required()]
public string UserName = {get; set;}
[Required()]
public string FirstName = {get; set;}
[Required()]
public string LastName = {get; set;}
}
Quiero utilizar estas propiedades para generar mi tabla y ser utilizada para un formulario.
La única cosa que puedo pensar en está haciendo esto
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>();
}
}
Así que básicamente tienen como modelo vista separada que está encerrado en otro modelo de vista que contiene una lista de usuarios (mi modelo de dominio)
De esta manera utilizo mi modelo de dominio para generar la tabla y mi AddUserViewModel para agregar usuarios.
Parece un poco redundante, así que no estoy seguro de si hay una mejor manera.
Editar
tengo algo como esto
var viewModel = new UserViewModel();
List<Users> users= UserService.GetAllUsers();
viewModel = Mapper.Map<Users, UserViewModel>(users);
return View("Index", viewModel);
También trató
var viewModel = new UserViewModel();
List<Users> users= UserService.GetAllUsers();
viewModel.AddUserViewModel = Mapper.Map<Users, AddUserViewModel>(users);
return View("Index", viewModel);
Editar 2
tengo esto y compila pero Obtengo este error
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.
No entiendo totalmente su pregunta ni lo que está tratando de lograr. –
@Darin Dimitrov - Ya que era un error tipográfico. Eso está corregido ahora. Estoy tratando de descubrir cómo puedo seguir usando las anotaciones de datos en el modelo de vista, pero también puedo devolver una lista de mis objetos de dominio, posiblemente sin duplicar el código dos veces. En este momento, todo en el objeto Usuarios es básicamente un duplicado de lo que está en AddUserViewModel(). Podría poner las anotaciones en el objeto de dominio pero no quiero hacer eso. – chobo2