В момента се опитвам да създам страница за редактиране за MVC приложение, което използва падащ списък, позволяващ на потребителя да редактира местоположението на служител. Разглеждам два сценария: един, при който служителят няма зададено местоположение, и един, при който служителят вече има назначено местоположение. Във втория случай бих искал падащият списък в страницата за редактиране автоматично да избира текущото местоположение в списъка. Списъкът е създаден успешно, но по подразбиране е първата стойност (в този случай празният низ) в SelectList, НЕ текущо избраната стойност. Кодът на контролера за този случай е както следва:
var pairs = db.Locations.Select(x => new { value = x.LocationID, text = x.City }).ToList();
pairs.Insert(0, (new {value = 0, text = ""}));
SelectList Locations = new SelectList(pairs,
"value", "text", pairs.First(x=> x.value == employee.Location.LocationID));
foreach (SelectListItem item in Locations)
{
item.Selected = false;
}
foreach (SelectListItem item in Locations)
{
if (item.Value == (employee.Location.LocationID.ToString()))
{
Debug.Print("Match Found");
item.Selected = true;
break;
}
}
ViewBag.Locations = Locations;
Обърнете внимание, че в момента изрично изброявам над списъка и маркирам желаната стойност като избрана. Първоначално използвах претоварването за конструктора SelectList, който взе параметър "selectedValue", но и това не проработи. Също така обърнете внимание на оператора за печат: когато се изпълнява, този ред наистина се отпечатва, което означава, че съответстващата стойност е намерена и маркирана. Той просто не се показва като такъв на страницата.
Кодът в изгледа е както следва:
<div class="form-group">
@Html.Label("Location", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("location", ViewBag.Locations as IEnumerable<SelectListItem>)
</div>
</div>
Има ли нещо, което пропускам?
Благодаря!
@Html.DropDownListFor(model => model.Location, ViewBag.Locations as IEnumerable<SelectListItem>)
? - person JamieD77   schedule 26.08.2015Locations
SelectList във вашия контролер ли е? защо е хвърлен катоIEnumerable<SelectListItem>
според вас? - person JamieD77   schedule 26.08.2015SelectList
изглежда, че вашият модел може да има свойство с имеLocation
, което е сложен обект и не можете да се свържете със сложен обект. - person   schedule 27.08.2015