我有一个绑定到@ 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()
完整的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);
}
答案 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>