IEnumerable <string>для SelectList, значение не выбрано - PullRequest
15 голосов
/ 21 октября 2008

У меня есть что-то вроде следующего в приложении ASP.NET MVC:

IEnumerable<string> list = GetTheValues();
var selectList = new SelectList(list, "SelectedValue");

И даже если выбранное значение определено, оно не выбирается на виде. У меня такое чувство, что я что-то здесь упускаю, так что, если кто-нибудь сможет избавить меня от моих страданий!

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

РЕДАКТИРОВАТЬ: Эта проблема была исправлена ​​в ASP.NET MVC RTM.

Ответы [ 4 ]

14 голосов
/ 21 марта 2012

Если вы просто пытаетесь сопоставить IEnumerable<string> с SelectList, вы можете сделать это встроенным образом так:

new SelectList(MyIEnumerablesStrings.Select(x=>new KeyValuePair<string,string>(x,x)), "Key", "Value");
14 голосов
/ 21 октября 2008

Попробуйте вместо этого:

IDictionary<string,string> list = GetTheValues();
var selectList = new SelectList(list, "Key", "Value", "SelectedValue");

SelectList (по крайней мере, в Preview 5) недостаточно умен, чтобы видеть, что элементы IEnumerable являются типом значения, поэтому он должен использовать этот элемент как для значения, так и для текста. Вместо этого он устанавливает значение каждого элемента в «ноль» или что-то в этом роде. Вот почему выбранное значение не имеет эффекта.

4 голосов
/ 19 февраля 2009

Взгляните на это: Выбранный список ASP.NET MVC SelectValue Получено

Это такое же хорошее объяснение происходящего, как и любое другое.

2 голосов
/ 29 сентября 2016

Попробуйте это

ViewBag.Items = list.Select(x => new SelectListItem() 
                              {
                                  Text = x.ToString()
                              });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...