I'm currently trying to figure out when to use ViewModels and when not to. I'm using Automapper for the task and currently have the following code:
// AccountController.cs
[AuthWhereRole(Roles = AuthorizeRole.Developer)] public ActionResult List() { MembershipUserCollection users = _memberShipService.GetAllUsers(); IEnumerable<ListUsersViewModel> viewModel = Mapper.Map<IEnumerable<MembershipUser>, IEnumerable<ListUsersViewModel>>(users.Cast<MembershipUser>().AsEnumerable()); return View("List", viewModel); } // ListUsersViewModel.cs
public class ListUsersViewModel { public Guid Id { get; set; } public virtual string UserName { get; set; } public string LastLogOn { get; set; } } // Bootstrapper.cs
public static void ConfigureAutoMapper() { Mapper.CreateMap<MembershipUser, ListUsersViewModel>() .ForMember(x => x.UserName, o => o.MapFrom(s => s.UserName)) .ForMember(x => x.Id, o => o.MapFrom(s => s.ProviderUserKey)) .ForMember(x => x.LastLogOn, o => o.MapFrom(s => s.LastLoginDate)); } I'm wondering whether its bad practice to map like this just to exclude some properties from the domain model? - And should I always use View Models, even when not needed?
Thanks in advance.