I have a linq query that is binded to a @Html.dropdownfor. If I assign a value to the user's account and leave the page. When I go back to the page, It's default value or preselected value is "Choose a schedule" even when I have a value assigned to it from before. I need it to preselect to the value already stored in the database. It was preselecting correctly with this
ScheduleBuilderList = _context.ScheduleBuilder.ToList()
until I binded LINQ query. How can I get the database value to the be default value selected in dropdown without messing up the 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()
Full Actionresult code with recommended change below
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);
}


Selectedvalue ofSelectListItemis ignored when you bind to a model property usingDropDownListFor(). Delete theSelected = item.ScheduleSummary == user.ScheduleSumline - its pointless.