2016-07-21 7 views
1

Ich habe folgende Enumeration:ASP MVC 5 @ Html.EnumDropDownListFor Defaults zum ersten Artikel

public enum EmploymentType 
{ 
    FullTime, 
    PartTime, 
    Contract 
} 

public class MyViewModel 
{ 
    public string searchTerm { get; set; } 
    public EmploymentType EmploymentType { get; set; } 
} 

public ActionResult Index(string searchTerm, string EmploymentType) 
{ 
    // some other stuff 

    var viewModel = new MyViewModel { SearchTerm = search }; 

    return View(viewModel);  
} 

@Html.EnumDropDownListFor(m => m.EmploymentType, "", new { @class = "form-control" }) 

wenn ich die Seite auf den Dropdown-Standard auf das erste Element laden FullTime anstelle der leeren Option. Ich setze nicht den Standardwert in meinem Controller, also warum ist es standardmäßig auf das erste Element und wie bekomme ich es stattdessen auf den leeren Optionswert?

Antwort

2

Die Lösung hierfür ist das Modell Enum-Eigenschaft einen Nullable Type zu machen:

public class MyViewModel 
{ 
    public string searchTerm { get; set; } 
    public EmploymentType? EmploymentType { get; set; } 
} 

diese Weise wird die Eigenschaft für null Einträge und wird standardmäßig erlaubt ist der Wert null.

+0

das funktioniert, aber ich muss das "" "aus meiner Sicht loswerden, ansonsten fügt es zwei leere Option Werte hinzu. '@ Html.EnumDropDownListFor (m => m.EmploymentType, neu {@class =" form-control "})' – adam78

+0

@ozzii Das stimmt, Sie müssen die optionale Standardoption nicht definieren. – Marko

0

Wenn Sie eine leere Option, um Ihre Enum hinzufügen, ist, dass eine Garantie:

public enum EmploymentType 
{ 
    [Display(Name = "<Select>")] 
    Select = 0, 
    FullTime = 1, 
    PartTime = 2, 
    Contract = 3 
} 

von Natur aus, es wird das erste Element in der Liste auswählen, um eine generische „die Option“ Hinzufügen Option ist ein Weg, um sicherzustellen, dass es einen Standardartikel gibt.

Wenn Sie sich auf die Reihenfolge verlassen, empfehle ich Ihnen, dem Aufzählungswert einen Wert zuzuweisen, so dass sich die Zahlen nicht verschieben, wenn Sie ihn in die Ganzzahl konvertieren.