Html.DropDownListFor не привязывает логический список выбора

#asp.net-mvc-3 #model-binding #html.dropdownlistfor #selectlistitem

#asp.net-mvc-3 #привязка к модели #html.dropdownlistfor #selectlistitem

Вопрос:

У меня есть этот код, который создает список выбора в качестве логического ответа

 var responseList = new List<SelectListItem>();
responseList.Add(new SelectListItem { Text = "Going", Value = bool.TrueString});
responseList.Add(new SelectListItem { Text = "Not Going", Value = bool.FalseString });
ViewData[ViewDataKeys.ResponseTo] = vatOptionList;
  

На мой взгляд, я использую помощник dropdownlist ниже.

 @Html.DropDownListFor(m => m.ResponseTo, (IEnumerable<SelectListItem>)ViewData[ViewDataKeys.ResponseTo], "--Select--")
  

это свойство моего класса модели:

 [Display(Name = "Response To")]
public bool ResponseTo { get; set; }
  

Моя проблема в том, что какова бы ни была ценность моей модели.В ответ на это выпадающий список всегда выбирает необязательное значение.

Я попытался использовать вспомогательный флажок, и, к удивлению, он, похоже, не проверен, хотя, когда я проверил элемент, значение флажка равно «true»

Я попытался использовать помощник текстового поля, и он показывает «истинный» текст, который, я думаю, имеет значение для моей модели, и он просто не привязывается к выпадающему списку или флажку. Мне нужно использовать выпадающий список. Что-нибудь, что я пропустил?

Комментарии:

1. Вы добавляете элементы списка выбора в responseList, но передаете vatOptionList в свои данные просмотра?

Ответ №1:

Только что протестировал это, это работает:

В вашем методе действия:

 var selectListItems = new List<SelectListItem>();
selectListItems.Add(new SelectListItem { Text = "Going", Value = bool.TrueString });
selectListItems.Add(new SelectListItem { Text = "Not going", Value = bool.FalseString });
ViewBag.MySelectList = new SelectList(selectListItems, "Value", "Text", viewModel.IsGoing);
  

По вашему мнению:

 @Html.DropDownList("IsGoing", (SelectList) ViewBag.MySelectList)