2010-06-30 19 views
21

ile ilgili sorun Enum'u genişletiyorum ve aşağıdaki kod verildiğinde, selectListItems, Enum'um için tüm doğru değerleri içeren genel bir ListListItems listesidir.ASP.Net MVC SelectLIst ve Listesi <SelectListItems>

İlk foreach döngüsü düzgün çalışıyor. Ancak, gerçek SelectList'i oluşturduğumda ve selectListItems içinde geçirdiğimde, tüm değerler kaybolur. Bu değerleri nasıl koruyabilirim?

foreach (SelectListItem item in selectListItems) 
{ 
    string tex = item.Text; 
    string val = item.Value; 
    string sel = item.Selected.ToString(); 
} 

SelectList selectList = new SelectList(selectListItems); 

foreach (SelectListItem slid in selectList) 
{ 
    string tex = slid.Text; 
    string val = slid.Value; 
    string sel = slid.Selected.ToString(); 
} 
+1

SelectList selectList = new SelectList (selectListItems, "Text", "Value"); Bu çalışır. Olmadan neden çalışmadığından emin değilim. Kimse? – Ted

cevap

50

Sen nerede değerlerine bakmak için bunu söylemek inşa hat değiştirmek gerekir. Senin durumunda olurdu: Bu olsa seçili öğeyi aktarılmaz

SelectList selectList = new SelectList(selectListItems, "Value", "Text"); 

. Bu durumda, hangi öğenin seçili olması gerektiğini anlamanız ve bu paramın değerini geçmesi gerekir.

List<SelectListItem> items = new List<SelectListItem>(); 
items.Add(new SelectListItem() { Text = "Test1", Value = "1", Selected = false }); 
items.Add(new SelectListItem() { Text = "Test8", Value = "8", Selected = true }); 
items.Add(new SelectListItem() { Text = "Test3", Value = "3", Selected = false }); 
items.Add(new SelectListItem() { Text = "Test5", Value = "5", Selected = false }); 

SelectList sl = new SelectList(items, "Value", "Text", "8"); 

Ayrıca yararlı olabilir this SO thread kontrol etmek isteyebilirsiniz: İşte

bir örnektir.

Düzenleme: Yorumunuzu gördünüz ve işe yaramadı çünkü varsayılan olarak Text ve Value alanlarını aramayı bilecek kadar akıllı değil. Bir nesne nesnesi iletebilir ve Text ve Value özelliklerine eşlenecek özellikleri tanımlayarak ona bağlama yeteneği verir.