2014-07-16 20 views
8

Tôi đang sử dụng MVC 5.2.0 và tôi đang cố gắng sử dụng Html.EnumDropDownListFor mới. Đây là cách tôi đặt các giá trị:Cách đặt giá trị đã chọn trong 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" }) 

Điều này đang hoạt động và các giá trị đang được hiển thị. Nhưng làm cách nào để tôi đặt giá trị đã chọn (SelectedEnumId)?

Thông thường tôi sẽ sử dụng

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

Có cách nào để làm điều này với Helper mới trong MVC 5,1-5,2? Hoặc tôi phải tạo ra một phương pháp mở rộng cho điều này?

Trả lời

20

Theo như tôi biết chỉ cần đảm bảo các giá trị mà bạn muốn được lựa chọn được thiết lập trong Model của bạn trước khi bạn gọi

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

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

Cảm ơn Coool, xấu của tôi, tôi nên chú ý hơn đến thực tế đó là một Enum. – Moy

2

không thể có được các tùy chọn được chọn trong bộ điều khiển để hiển thị trên kết thúc trước hoặc , vì vậy đã phải nhờ đến thiết lập một đầu vào ẩn tạm thời và sử dụng jQuery để cập nhật trên các mặt hàng:

<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

Chỉ có cùng một vấn đề trong một quan điểm của tôi. Các quan điểm khác (sử dụng một enum khác nhau) hoạt động hoàn hảo, nhưng không phải cái này. Giải pháp hacky này hoạt động, nhưng tôi ước có một giải pháp và giải thích khác. – mikecamimo

Các vấn đề liên quan