mvc5下拉列表中的默认选定值

时间:2017-06-04 15:22:37

标签: c# .net asp.net-mvc linq

我有一个绑定到@ Html.dropdownfor的linq查询。如果我为用户的帐户分配了一个值并离开了该页面。当我返回页面时,它的默认值或预选值是"选择一个时间表"即使我之前分配了一个值。我需要它来预先选择已存储在数据库中的值。这是

正确预选
 ScheduleBuilderList = _context.ScheduleBuilder.ToList()

直到我绑定LINQ查询。 如何将数据库值设置为下拉列表中选择的默认值而不会弄乱LINQ?

   @Html.DropDownListFor(m => m.ApplicationUser.ScheduleSum, new SelectList(Model.ScheduleBuilderList, "ScheduleSummary", "ScheduleSummary"), "Choose a schedule", new {@class = "form-control", id="dropdown"})

LINQ

ScheduleBuilderList = _context.ScheduleBuilder.Where(s => s.IsScheduleAssigned == false).ToList()

enter image description here

enter image description here

完整的Actionresult代码,推荐更改

 public ActionResult  EmployeeDetails(string id, ScheduleBuilder scheduleBuilder, ApplicationUser applicationUser)
{
    var user = _context.Users.SingleOrDefault(e => e.Id == id);

    if (user == null)
    {
        return HttpNotFound();
    }

    var viewModel = new TierViewModel()
    {
        ApplicationUser = user,
        TierLevel = _context.Tier.ToList(),
        ScheduleBuilderList = _context.ScheduleBuilder
            .Where(s => s.IsScheduleAssigned == false)
            .Select(item => new SelectListItem
            {
                Text = item.ScheduleSummary,
                Value = item.ScheduleSummary,
                Selected = item.ScheduleSummary == user.ScheduleSum
            })

    };

    var user1 = _context.Users.ToList();

    var schedule1 = _context.ScheduleBuilder.ToList();

    return View("EmployeeDetails", viewModel);
}

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

var ScheduleBuilderList = _context.ScheduleBuilder
                                  .Where(s => s.IsScheduleAssigned == false)
                                  .Select(item => new SelectListItem
                                  {
                                      Text = item.ScheduleSummary,
                                      Value = item.ScheduleSummary,
                                      Selected = item.ScheduleSummary == "usersvalue"
                                  });

应将文字“usersvalue”替换为您感兴趣的ApplicationUser.ScheduleSum的值。然后您应该更改一下您的视图,如下所示:

@Html.DropDownListFor(m => m.ApplicationUser.ScheduleSum, 
                      Model.ScheduleBuilderList, 
                      "Choose a schedule", 
                      new {@class = "form-control", id="dropdown"})

并且您的模型应使用以下类型替换ScheduleBuilderList的类型:

IEnumerable<SelectListItem>