ユーザーのリストを表示しています。各ユーザー レコードには、TrainingEvent オブジェクト プロパティがあります (多数の TrainingEvent から選択されます)。User リストと TrainingEvents リストを含むビューモデルを作成しました。
ビューモデル:
public class RegistrationViewModel
{
public IEnumerable<Domain.Entities.User> Users { get; set; }
public IEnumerable<SelectListItem> TrainingEvents { get; set; }
}
(注: Domain.Entities.User には TrainingEvent オブジェクト プロパティが含まれています)
コントローラ:
public ActionResult Dealership(int id)
{
var model = new RegistrationViewModel
{
Users = repository.Find
.Where(u => u.Dealer.DealerId == id).OrderBy(u => u.LastName),
TrainingEvents = repository.TrainingEvents.ToList()
.Select(x => new SelectListItem
{
Text = x.Date.ToString() + " - " + x.LocationName,
Value = x.TrainingEventId.ToString()
})
};
return View("East", model);
}
ビューでのバインディング:
@foreach(Company.Domain.Entities.User usr in Model.Users)
{
<tr>
<td>@usr.LastName</td>
<td>@usr.FirstName</td>
<td>@usr.JobDescription</td>
<td>@Html.DropDownListFor(m => m.Users.FirstOrDefault(u => u.UserId == usr.UserId).TrainingEvent, Model.TrainingEvents)</td>
</tr>
}
ユーザーが一覧表示され、各ユーザー行には、TrainingEvents が取り込まれるドロップダウンがあります。ただし、以前にユーザーの TrainingEvent オブジェクトに保存された値は選択されていません。なぜそうしないのかというアイデアはありますか?