Это немного урезано, но по сути у меня есть модель, которая выглядит примерно так:
public class PersonCreateEditViewModel
{
public string Title { get; set; }
public IEnumerable<SelectListItem> Titles { get; set; }
}
и на своей странице редактирования я хочу отобразить текущий заголовок этого человека в DropDownList, такмы можем изменить их название.Этот код выглядит следующим образом:
@Html.DropDownListFor(model => model.Title, new SelectList(Model.Titles, "Value", "Text", Model.Title))
, и я заполняю его в своем действии, получая несколько строк:
IEnumerable<SelectList> titles = somelistoftitles.Select(
c => new SelectListItem
{
Value = c,
Text = c
};
var viewModel = new PersonCreateEditViewModel()
{
Title = model.Title,
Titles = sometitles
};
return View(viewModel);
, и это заполняет DropDownList значениями, но нене выбрать текущий заголовок человека.Итак, я, очевидно, делаю что-то не так здесь.Глядя на основной html, я вижу, что атрибут selected
не установлен для опции, соответствующей заголовку человека.Я подумал , что при указании Model.Title
в качестве третьего аргумента его можно будет выбрать.
Идеи?
Обновление
Я добавил настройку свойства Selected
, как предложено ниже qntmfred, и это установит значение true в списке, но у <option>
нет атрибута selected
.
решено
Итак, это было неуловимо.У меня просто получилась запись ViewBag
с именем "Заголовок" - что-то вроде этого:
@{
ViewBag.Title = "Edit Person"
}
, и это, очевидно, привело к тому, что выбор не работал, так как моя модель также имеет свойство "Заголовок".Я решил проблему, переименовав собственность.