問題
現在、MVC プロジェクトに自動マッピングを追加していますが、行き詰っています。現在、データベース内のデータを表すために使用される User モデルがあります。そのモデルを、Edit メソッドが呼び出されたときに使用される EditUserModel にマップする必要があります。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; }
}
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;