2012-12-13 24 views
5

Tôi đang gặp sự cố với HtmlHelper, RadioButtonFor và enum trong mô hình của tôi. Tôi có một cái nhìn mạnh mẽ gõ, và tôi muốn các hộp kiểm để chuyển đổi tài sản enum của tôi.MVC3 RadioButtonFor with enum

Enum.cs 

public enum Values{ 
    Value1, 
    Value2 
} 

Model.cs 

public class Model{ 
    public Values MyProp{ get; set; } 
; 

View.cshtml 

@Html.RadioButtonFor(model => model.MyPropi, Values.Values1) 

Controller.cs 
public ActionResult WizardFirstStep() 
{ 
    var model = new Model(); 
    return View(model); 
} 

Nếu tôi thiết lập giá trị myProperty trong bộ điều khiển, các RadioButton được kiểm tra như mong đợi. Nhưng sau khi đăng bài lên bước thủ thuật tiếp theo, sẽ nhận được mô hình làm tham số, thuộc tính không được đặt.

Nếu nó sẽ giúp bạn hiểu những gì tôi có ý nghĩa: Nếu nó sẽ là C# và WPF tôi sẽ sử dụng một IValueConverter.

btw: Tôi sử dụng HtmlHelper.ActionLink để lấy mô hình cho bộ điều khiển.

Cảm ơn trước

Trả lời

2

Xin lỗi vì sự bất tiện. Sau khi đăng bài ở đây, tôi đã tìm ra giải pháp rất nhanh. ActionLink của tôi đã không gửi biểu mẫu @ Html.BeginForm. Vì vậy, tôi đã thay đổi radio của tôi thành:

@Html.RadioButtonFor(model => model.MyPropi, Values.Values1, new{ onClick = "this.form.submit();" }) 

sẽ gửi giá trị chính xác cho bộ điều khiển của tôi. Đối với thời điểm này là okay. Có thể ActionLink có thể đăng lại dữ liệu biểu mẫu.

+0

Bạn có thể xem xét đánh dấu câu trả lời này là được chấp nhận – rossipedia

2

Hãy thử điều này, nó sẽ làm việc như tôi đã làm điều tương tự trước đây:

@Html.RadioButtonFor(model => model.MyProp, (int)Values.Values1, model.MyProp == Values.Values1) 

Thông báo các diễn viên để int, nó đảm bảo các giá trị chính xác được sử dụng cho html.

EDIT: Xin lỗi, tôi nghĩ bạn cũng cần thông số thứ ba để đảm bảo nút radio chính xác được đặt khi tải chế độ xem.

Tôi cũng giả định MyPropi là một lỗi đánh máy và thay đổi nó để MyProp, hãy đảm bảo này phù hợp một cách chính xác ở cuối của bạn

+0

Tôi sợ, nhưng điều đó không làm việc . Vấn đề của tôi là: làm thế nào để có được giá trị chính xác, tùy thuộc vào radiobutton là toggled, vào mô hình của tôi. Hiện tại tôi đang định tuyến Model qua ActionLink vào bộ điều khiển. @ Html.ActionLink ("next", "WizardSecondStep", Model) – csteinmueller

+1

Tôi hiểu. Vì vậy, điều đó sẽ không hoạt động, bạn cần phải đăng biểu mẫu của bạn mỗi bước nếu bạn muốn mô hình ràng buộc để làm việc. Vì vậy, thay vì ActionLink sử dụng nút gửi để đăng biểu mẫu. Có mô hình làm thông số của phương thức bài đăng của bạn – musefan

-1

Đối với các trang ASPX: <%: Html.RadioButtonFor (m => m.YourProp, giá trị được lựa chọn của enum của bạn như: demo1.enum1.value2)