25 Stimmen

Problem mit ASP.Net MVC SelectLIst und List<SelectListItems>

Ich erweitere eine Enum und, gegeben den folgenden Code, selectListItems ist eine generische Liste von SelectListItems, die alle die richtigen Werte für meine Enum hat.

Die erste foreach-Schleife funktioniert gut. Wenn ich jedoch die eigentliche SelectList erstelle und in selectListItems gehen alle Werte verloren. Wie kann ich diese Werte intakt halten?

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();
}

54voto

Kelsey Punkte 46346

Sie müssen die Zeile ändern, in der Sie das Programm erstellen, um ihm mitzuteilen, wo es nach den Werten suchen soll. In Ihrem Fall wäre das:

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

Allerdings wird das ausgewählte Element nicht übernommen. In diesem Fall müssen Sie herausfinden, welches Element das ausgewählte sein sollte und seinen Wert über den vierten Parameter übergeben.

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

Weitere Informationen finden Sie unter dieses SO-Thema die hilfreich sein könnten.

Edit: Habe gerade Ihren Kommentar gesehen, und es funktioniert nicht, weil es nicht intelligent genug ist, um zu wissen, dass es nach dem Text y Value Felder standardmäßig. Sie können ihm einen Objekttyp übergeben, und es gibt Ihnen die Möglichkeit, sich daran zu binden, indem Sie definieren, welche Eigenschaften Sie auf die Text y Value Eigenschaften.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X