2014-07-16 5 views
8

Ich verwende MVC 5.2.0 und ich versuche, die neue Html.EnumDropDownListFor zu verwenden. So stelle ich die Werte ein:Wie wird der ausgewählte Wert in EnumDropDownListFor festgelegt?

//Model 
public class MyModel { 
    public int SelectedEnumId { get; set; } 
    public TestEnum MyEnum { get; set; } 
} 

//Enum 
public enum TestEnum : int 
{ 
    name1 = 1, 
    name2 = 2 
} 

//View 
@Html.EnumDropDownListFor(model => model.MyEnum,new { @class = "form-control" }) 

Dies funktioniert und die Werte werden angezeigt. Aber wie stelle ich den ausgewählten Wert (SelectedEnumId)?

Normalerweise würde ich

//Not enum 
@Html.DropDownListFor(model => model.SelectedId, new SelectList(Model.myvalues, "Value", "Text")) 

Gibt es verwendet eine Möglichkeit, dies in MVC 5,1-5,2 mit dem neuen Helper zu tun? Oder muss ich dafür eine Erweiterungsmethode erstellen?

Antwort

20

Soweit ich nur sicher, dass der Wert, den Sie in Ihrem Modell gesetzt ausgewählt werden soll machen wissen, bevor Sie

nennen
//Controller: 
... 
myModel.TestEnum = TestEnum.name2; 
... 

//On your view 
... 
@Html.EnumDropDownListFor(model => model.TestEnum); 
... 
+0

Coool danke, mein Schlechter, ich sollte mehr darauf achten, dass das ein Enum ist. – Moy

2

konnte nicht die Möglichkeit, in der Steuerung auf dem vorderen Ende zum Anzeigen ausgewählt bekommen entweder , so musste die Einrichtung eines temporären versteckten Eingang greifen und verwendet jQuery auf der Client-Seite zu aktualisieren:

<div class="form-group"> 
@Html.LabelFor(model => model.MyEnum, htmlAttributes: new { @class = "control-label col-md-2" }) 
<div class="col-md-10"> 
    @Html.EnumDropDownListFor(model => model.MyEnum, "Select name", new { @class = "form-control" }) 
    @Html.ValidationMessageFor(model => model.MyEnum, "", new { @class = "text-danger" }) 
</div> 
@Html.Hidden("MyEnumTemp", (int)Model.MyEnum) 

<script> 
    $(function() { 
     $("#MyEnum").val($("#MyEnumTemp").val()); 
    }); 
</script> 
+0

hatte gerade das gleiche Problem in einer meiner Ansichten. Andere Ansichten (mit einer anderen Enum) funktionieren perfekt, aber nicht diese. Diese Hacky-Lösung funktioniert, aber ich wünschte, es gäbe eine andere Lösung und Erklärung. – mikecamimo

Verwandte Themen