使用MVC4 DropDownList帮助程序来深层嵌套属性

时间:2014-08-14 13:04:23

标签: c# asp.net asp.net-mvc html-helper

在我看来,我需要为不在即时视图模型中的属性创建一个下拉列表,而是嵌套在另外两个视图模型中。它安排如下:

patient -> (list)referrals -> (list)bookings.attendanceId

在这种情况下,我如何使用DropDownListFor助手?问题不是找到List<SelectListItem>,而是将帮助器指向下拉选择应填充的标量值。

2 个答案:

答案 0 :(得分:1)

首先只是一个意见,我们使用视图模型的主要原因之一是将域模型简化为仅在视图中明确需要的内容。所以我的问题是你的视图模型为何如此复杂?

据说,实现你想要做的唯一方法是让你的下拉列表嵌套在2 for循环中,如下所示:

@for (var i = 0; i < Model.Referrals.Count; i++)
{
    @for (var j = 0; j < Model.Referrals[i].Bookings.Count; j++)
    {
        @Html.DropDownListFor(m => m.Referrals[i].Bookings[j].AttendanceId, Model.SomeSelectList)
    }
}

答案 1 :(得分:0)

尝试

@for(int i = 0; i < Model.Referrals .Count; i++)
{
  for (int j = 0; j < Model.Referrals[i].Bookings.Count; j++)
  {
    @Html.DropDownListFor(m => m.Referrals[i].Bookings[j].AttendanceId, Model.YourSelectList)