IEnumerable <string> в SelectList, не выбрано значение

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

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

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

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

EDIT: эта проблема была исправлена ​​с помощью ASP.NET MVC RTM.

Ответ 1

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

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

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

Ответ 2

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

new SelectList(MyIEnumerablesStrings.Select(x=>new KeyValuePair<string,string>(x,x)), "Key", "Value");

Ответ 4

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

ViewBag.Items = list.Select(x => new SelectListItem() 
                              {
                                  Text = x.ToString()
                              });