2014-07-16 9 views
8

मैं एमवीसी 5.2.0 का उपयोग कर रहा हूं और मैं नए Html.EnumDropDownListFor का उपयोग करने की कोशिश कर रहा हूं। इस प्रकार मैं मान निर्धारित कर रहा हूं:EnumDropDownListFor में चयनित मान कैसे सेट करें?

//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" }) 

यह काम कर रहा है और मूल्य प्रदर्शित किए जा रहे हैं। लेकिन मैं चयनित मूल्य (SelectedEnumId) कैसे सेट करूं?

आम तौर पर मैं

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

का प्रयोग करेंगे वहाँ MVC 5.1-5.2 में नए सहायक के साथ ऐसा करने के लिए एक रास्ता है? या मुझे इसके लिए एक एक्सटेंशन विधि बनाना है?

उत्तर

20

जहाँ तक मुझे पता के रूप में बस सुनिश्चित मान आपके द्वारा चुने जा करने के लिए अपने मॉडल में सेट किया गया है इससे पहले कि आप फोन चाहते हैं

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

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

कूल धन्यवाद, मेरा बुरा, मुझे इस तथ्य पर अधिक ध्यान देना चाहिए कि एक एनम है। – Moy

2

नहीं विकल्प नियंत्रक में चयनित या तो सामने के छोर पर प्रदर्शित करने के लिए मिल सकती है है, तो एक अस्थायी छिपा इनपुट सेटिंग का सहारा लेना पड़ा और jQuery का इस्तेमाल किया क्लाइंट की तरफ अद्यतन करने के लिए:

<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

मेरे विचारों में से एक में बस एक ही समस्या थी। अन्य विचार (एक अलग enum का उपयोग कर) पूरी तरह से काम करते हैं, लेकिन यह नहीं। यह हैकी समाधान काम करता है, लेकिन मेरी इच्छा है कि एक और समाधान और स्पष्टीकरण था। – mikecamimo

संबंधित मुद्दे