2008-10-21 68 views
15

我有類似的東西在ASP.NET MVC應用程序如下:IEnumerable的<string>到的SelectList,沒有選擇值

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

甚至想到選定值定義,它沒有被在視圖中選擇。我有這種感覺,我在這裏錯過了一些東西,所以如果任何人都可以讓我擺脫我的痛苦!

我知道我可以使用一個惱人的類型來提供鍵和值,但我寧願不添加額外的代碼,如果我不必。

編輯:此問題已由ASP.NET MVC RTM修復。

+1

見我DDL教程HTTP:// WWW。 asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc和http://blogs.msdn.com/b/ rickandy/archive/2012/01/09/cascasding-dropdownlist-in-asp-net-mvc.aspx – RickAndMSFT 2012-02-14 19:21:56

回答

14

試試這個:

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

的SelectList(至少在預覽5)是不夠聰明地看到IEnumerable的元素是值類型,所以應該使用該項目的金額和文字。相反,它將每個項目的值設置爲「null」或類似的東西。這就是爲什麼選定的值不起作用。

4

看看這個:ASP.NET MVC SelectList selectedValue Gotcha

這是怎麼回事任何作爲很好的解釋。

+1

僅供參考,鏈接已經死機;看起來像域名過期。 – CBono 2010-12-30 22:19:20

+0

不回答他的問題 – 2014-09-30 01:22:10

14

如果你只是想映射一個IEnumerable<string>SelectList你可以做內聯這樣的:

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

而不是.Select(...),你可以.ToDictionary(...) – 2014-08-29 10:34:09

2

試試這個

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