我有一个绑定到@ Html.dropdownfor的linq查询。如果我为用户的帐户分配一个值并离开页面。当我回到页面时,即使当我有一个从前分配给它的值时,它的默认值或预选值是“选择时间表”。我需要它预先选择已存储在数据库中的值。这是预选正确与此mvc5下拉列表中的默认选定值
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()
完整的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);
}
你的新的LINQ查询过滤存储在数据库中的值。您可能需要.Where(s => s.IsScheduleAssigned == false || s == currStoredSchedule)。这只是伪代码,因为我们不知道ScheduleBuilderList的外观如何。 – vabii
使用DropDownListFor()绑定到模型属性时,将忽略设置SelectListItem的Selected值。删除'Selected = item.ScheduleSummary == user.ScheduleSum'行 - 它没有意义。 –