2012-08-22 14 views
6

Ich möchte eine Dropdown-Liste für einige Attribute meiner Modellklasse generieren. Ich arbeite an einer mvc .net-Anwendung und ich benutze eine Rasiermaschine für Ansichten. Hier ist meine Klasse:Dropdown-Liste asp mvc

public class present 
{  
    public DateTime jour { get; set; } 
    public int entree_mat_h { get; set; } 
    public int entree_mid_h { get; set; } 
    public int sortie_mat_h { get; set; } 
    public int sortie_mid_h { get; set; } 
    public int entree_mat_m { get; set; } 
    public int entree_mid_m { get; set; } 
    public int sortie_mat_m { get; set; } 
    public int sortie_mid_m { get; set; } 
    public string mac { get; set; } 
    public string ip { get; set; } 
} 

Zum Beispiel möchte ich eine Dropdown-Liste zeigen, mit Werten von 0 bis 60 für jedes Attribut, das eine ganze Zahl ist. Funktioniert @ html.dropdownlistfor() in diesem Fall?

+1

Verwendung gestochen '@ Html.DropDownList()' – Doomsknight

+1

, wie es in meinem Fall zu benutzen? –

+0

Wenn Sie im Controller eine Liste mit 'value'- und' text'-Variablen erstellen, können Sie sie verwenden. Oder Sie können '@ html.dropdownlist()' –

Antwort

8

Ihrer Ansicht declare Liste der möglichen Werte, in Ihrem Beispiel von 0 zu 60

@{ var values = new SelectList(Enumerable.Range(0, 60)); } 

Dann können Sie es in DropDownListFor Helfer verwenden

@Html.DropDownListFor(m => m.entree_mat_h, values) 
@Html.DropDownListFor(m => m.entree_mid_h, values) 
.... 
+0

Das ist ein viel besserer Weg als ich es getan habe. –

0

Ja, aber Sie müssten eine benutzerdefinierte Auswahlliste mit den gewünschten Werten einfügen.

So würden Sie so etwas tun:

var list = new List<SelectListItem>(); 

    for(int i=1; i < 61; i++) 
    { 
     list.Add(new SelectListItem{Text = i, Value = i}); 
    } 

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

Dann müssten Sie, dass an das Modell übergeben

dann in der Ansicht würden Sie wie folgt vor:

@Html.DropDownListFor(x => x.Quantity, @Model.Quantity) 

Oder etwas in dieser Richtung.

Offensichtlich habe ich falsche Namen verwendet, so dass Sie es zu Ihrem eigenen Modell passen müssten.

+0

verwenden Ich mag Kroliks Version viel mehr als meine, viel besser. –

0

Mit dieser Erweiterung Methode für den Aufbau Ihrer Dropdown-Liste aus Quelle (wählen Sie alle Werte, die auf Schlüssel und Wert projizieren). Beispiel

public static IEnumerable<SelectListItem> ToDropDown<TSource>(this IEnumerable<TSource> source, Func<TSource, string> keySelector, Func<TSource, string> elementSelector, Func<TSource,bool> selected) 
     { 
      if (source == null) 
      { 
       return new List<SelectListItem>(); 
      } 
      return source.Select(c => new SelectListItem { Value = keySelector(c), Text = elementSelector(c), Selected = selected(c) }).ToList(); 
     } 

füllen Sie Ihre viewBag

ViewBag.Languages = languageRepository().GetAll().ToList().ToDropDown(c => c.ID, c => c.Description, c => c.ID == "EN"); 

und schließlich

@Html.DropDownList("ddLanguages", (IEnumerable<SelectListItem>)ViewData.Languages, "Please Select")