2010-06-30 10 views
21

Ich erweitere eine Enum und, mit dem folgenden Code, selectListItems ist eine generische Liste von SelectListItems, die alle richtigen Werte für meine Enum hat.Problem mit ASP.Net MVC SelectLIst und List <SelectListItems>

Die erste foreach-Schleife funktioniert gut. Wenn ich jedoch die tatsächliche SelectList erstelle und selectListItems übergebe, gehen alle Werte verloren. Wie kann ich diese Werte erhalten?

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 = neu SelectList (selectListItems, "Text", "Value"); Das funktioniert. Ich bin mir nicht sicher, warum es ohne es nicht funktioniert. Jemand? – Ted

Antwort

50

Sie müssen die Zeile, in der Sie sie erstellen, ändern, um anzugeben, wo nach den Werten gesucht werden soll. In Ihrem Fall wäre es:

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

Dies wird jedoch nicht das ausgewählte Element übertragen. In diesem Fall müssen Sie herausfinden, welcher Artikel der ausgewählte sein soll und den Wert über den vierten Parameter übergeben. Hier

ein Beispiel:

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"); 

Sie können auch prüfen, this SO thread wollen die hilfreich sein könnten.

Edit: Nur Ihren Kommentar gesehen, und es funktioniert nicht, weil es nicht intelligent genug ist zu wissen, nach den und Value Felder standardmäßig zu suchen. Sie könnten ihm einen Objekttyp übergeben, und Sie erhalten die Möglichkeit, sich daran zu binden, indem Sie definieren, welche Eigenschaften den Eigenschaften und Value zugeordnet werden sollen.