나는 현재 내 MVC 프로젝트에 자동 매핑을 추가하고 위해를 IEnumerable
IEnumerable<SelectListItem>
(드롭 다운 메뉴의 경우)으로 맵핑하는 방법을 알 수없는 것처럼 보입니다.
솔루션 시도
는지금 현재 난 아무것도 구현하는 시도하지 않았습니다. 나는 어디에 IEnumerable<SelectListItem>
에 대한 최고의 장소 또는 어디에 그것을 채울 수 있는지 잘 모르겠습니다. 지금 그것은 컨트롤러에 채워지고 있습니다.
User.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; }
}
EditUserModel.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; }
}
Controller.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;
그래 IEnumerable을 생성하는 데 사용 된 코드의 양을 줄였습니다. 그러나 매퍼는이를 해결할 수 없습니다. 이것은 컨트롤러에서 가장 좋은 방법입니다. EditUserViewModel model = Mapper.Map <사용자, EditUserViewModel> (사용자); model.Roles = context.Roles.ToSelectList (r => r.RoleID, r => r.Description); –