Получить данные из базы данных и липкости на вариант я планирую быть выбран по умолчанию:установки выбранного значения сильно типизированных MVC SelectList Trouble
public List<Forester> GetForesters()
{
var data = _db.tblForester.ToList();
List<Forester> ForesterList = new List<Forester>();
foreach (var item in data)
{
Person person = new Person()
{
Key_ = item.Key_,
FirstName = item.FirstName,
LastName = item.LastName,
District = item.District,
County = item.County
};
PersonList.Add(person);
}
PersonList.Add(new Person { Key_ = -1, FirstName = "- Select ", LastName = "Person -" });
return PersonList;
}
Модель имеет два свойства:
public int SelectedPersonId { get; set; }
public IEnumerable<SelectListItem> PersonList { get; set; }
Контроллер получает список из базы данных и делает выбор:
vm.SelectedPersonId = -1;
vm.PersonList = new SelectList(repo.GetPeople(), "Key_", "PersonsName", vm.SelectedpersonId);
Я пробовал пару пути в представлении:
@Html.DropDownListFor(m => m.Key_, new SelectList(Model.PersonList, "Value", "Text", -1), new { @class = "form-control ddl" })
Раскрывающийся работает отлично, за исключением того, выбранное значение является только первым в списке, а не один я указываю.
Вот как HTML делает:
<form action="/Forester/Activity" method="post"><select class="form-control ddl" data-val="true" data-val-number="The field Key_ must be a number." data-val-required="The Key_ field is required." id="Key_" name="Key_"><option value="1">DIANE PARTRIDGE</option>
<option value="2">GARY GROTH</option>
...
Один я добавил на дне:
<option value="-1">- Select Forester -</option>
Кроме того, линия, где вы установите 'vm.PersonList' не должен построить' SelectList'. Просто сделайте 'repo.GetPeople(). Выберите (m => новый SelectListItem {...})', чтобы построить ваш 'IEnumerable'. –
@ChrisPratt Хорошая точка! –
Спасибо, ребята, сейчас работаем. Что касается контрольной линии, какая разница? – BattlFrog