问题
我目前正在向我的 MVC 项目添加自动映射,但我被卡住了。现在我有一个用户模型用于表示数据库中的数据。我必须将该模型映射到一个 EditUserModel,该模型将在调用 Edit 方法时使用。EditUserModel 有IEnumerable<SelectListItem>
(用于下拉菜单)我似乎无法弄清楚如何映射。
尝试的解决方案
截至目前,我还没有尝试实现任何东西。我不确定最好的地方IEnumerable<SelectListItem>
或填充它的地方。现在它被填充在控制器中。
用户.cs
public class User
{
[Key]
public int UserID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public int RoleID { get; set; }
[ForeignKey("RoleID")]
public virtual Role Role { get; set; }
}
编辑用户模型.cs
public class EditUserViewModel
{
[HiddenInput(DisplayValue = false)]
public int UserID { get; set; }
[Required]
public String Username { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[DisplayName("Role")]
[Required]
public int RoleID { get; set; }
//The trouble field
public IEnumerable<SelectListItem> Roles { get; set; }
}
控制器.cs
EditUserViewModel model = new EditUserViewModel();
//Population of the dropdown menu
model.Roles = context.Roles
.ToList()
.Select(x => new SelectListItem
{
Text = x.Description,
Value = x.RoleID.ToString()
});
//Mapping that the automaper will take care of
model.UserID = user.UserID;
model.Username = user.Username;
model.RoleID = user.RoleID;