我有一個綁定到@ 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'行 - 它沒有意義。 –