2009-03-17 15 views
0

Ich versuche, eine einfache Erweiterungsmethode zu schreiben, die es mir ermöglicht, ein Element in einer MVC SelectList nach Text und nicht nach Wert auszuwählen.MVC-Erweiterungsmethode

Dies ist, was ich gefunden habe, aber obwohl das Element wie beim Debuggen ausgewählt eingestellt ist, hat die zurückgegebene SelectList alle Items mit selected = false.

Irgendwelche Ideen?

public static SelectList SelectByText(this SelectList list, string TextValue) 
     { 
      foreach (var item in list) 
      { 
       if (item.Text == TextValue) 
       { 
        item.Selected = true; 
       } 
      } 
      return list; 
     } 
+0

Können Sie zeigen, wie Sie beweisen, dass alle ausgewählten Eigenschaften immer noch falsch sind? Liegt es an dem, was Sie in der UI-Ausgabe gesehen haben, oder durch die Untersuchung der Objekte direkt im Debugger? Es ist schwer zu sehen, wie Sie das Ergebnis erhalten, das Sie beschreiben. – AnthonyWJones

+0

Innerhalb des if (item.Text == TextValue) {} hat das ausgewählte Attribut des Elements den Wert true, wenn die Werte übereinstimmen, aber in der Gesamtsammlung im Debugger wird die Eigenschaft des Elements auf false gesetzt. Ich kann nicht verstehen, was hier vor sich geht ?? –

Antwort

2

Es ist nicht klug, zu versuchen, Artikel auf seinen Text anstelle eines Wertes

ohnehin zu wählen, scheint es, dass Sie mehr als ein Element, das Ihre erfüllt if-Anweisung

, um sicherzustellen, nur ein Element wird ausgewählt, um Ihnen eine Pause setzen können, wenn Sie Bedingung erfüllen wie folgt aus:

if(item.Text == TextValue) 
{ 
    item.Selected = true; 
    break; 
} 

prost