Кажется, этот вопрос задавался слишком много раз. Но это сводит меня с ума.Выбранное значение, не заданное в DropDownListFor() в MVC4
Это моя (упрощенная) модель.
public class UserEditModel
{
[Required]
public string Title { get; set; }
private IEnumerable<SelectListItem> _titleList;
public IEnumerable<SelectListItem> TitleList
{
get { return _titleList.Select(x => new SelectListItem {
Selected = (x.Value == Title),
Text = x.Text,
Value = x.Value
});
}
set { _titleList = value; }
}
}
В Text
и Value
свойства каждого SelectListItem
в TitleList
элемента идентичны. Например:
new SelectListItem { Text = "Mr", Value = "Mr" }
Когда следующий код размещен, правильное значение Title
привязано к модели, но всякий раз, когда модель проталкиваются к представлению в ответ на POST или GET, выбранное значение не установленный в выпадающем списке, хотя все intellisense показывает, что правильные значения присутствуют.
@Html.DropDownListFor(x => x.Title, Model.TitleList)
Я убедился, что код верен на основе нескольких статей и нескольких ответов SO, поэтому я в тупике.
Любые предложения?
Update:
Для полноты, это действие и поддерживает метод:
[HttpGet]
public ActionResult Edit(int id)
{
var user = _userService.Get(id);
var model = new UserEditModel()
{
...
Title = user.Title,
TitleList = ListTitles()
};
return View(model);
}
private IEnumerable<SelectListItem> ListTitles()
{
var items = new[] {
new SelectListItem() {Text = "Mr", Value = "Mr" },
new SelectListItem() {Text = "Mrs", Value = "Mrs"},
new SelectListItem() {Text = "Ms", Value = "Ms"},
new SelectListItem() {Text = "Miss", Value = "Miss"},
new SelectListItem() {Text = "Professor", Value = "Professor"},
new SelectListItem() {Text = "Dr", Value = "Dr" }
};
return items;
}
Как вы видите, нет ничего особенного, просто прямой реализации.
Попробуйте добавить 'ModelState.Clear()' непосредственно перед тем, как вы вернете свое представление. – mattytommo
@mattytommo Зачем мне это нужно? Не могли бы вы разместить его в качестве ответа? – Digbyswift
См. Мой ответ, вот почему :) – mattytommo