2009-03-18 39 views
33

Tôi đang sử dụng MVC, và tôi đã có một đơn giản thiết lập nút radio:Làm thế nào để kết hợp nhãn với nút radio

<%=Html.RadioButton("my_flag", True)%><label>Yes</label> 
<%=Html.RadioButton("my_flag", False)%><label>No</label> 

Điều duy nhất tôi đang thiếu là rằng bạn không thể nhấp vào nhãn để chọn nút radio. Thông thường bạn sẽ sử dụng:

<label for="my_flag"> 

nhưng liên kết cả hai nhãn với nút radio cuối cùng. Có cách nào để liên kết nhãn với nút radio chính xác không?

Lưu ý: Đây là bắt chước một mẫu giấy, do đó, chuyển sang hộp kiểm không phải là một tùy chọn.

+0

Ngay cả với câu trả lời được chấp nhận, bạn cần phải ghi đè ID làm ví dụ nhất định trong câu trả lời của tôi.Nếu bạn không làm điều này, HTML của bạn sẽ không xác nhận được vì hai thành phần có cùng ID có mặt. –

+0

http://stackoverflow.com/questions/8320172/use-html-radiobuttonfor-and-html-labelfor-for-the-same-model-but-different-value – JohnLBevan

Trả lời

31

Bạn cần phải cung cấp hai nút radio cùng tên (để chúng trong cùng một nhóm), nhưng khác nhau id (để bạn có thể kết hợp nhãn với mỗi một cá nhân). Tôi không quen thuộc với ASP.NET MVC, vì vậy tôi không biết làm thế nào để thực sự thực hiện điều này, nhưng đó là giải pháp.

Chỉnh sửa: a Khả năng thứ hai là để bọc các nút radio bên trong thẻ nhãn, như vậy:

<label><%=Html.RadioButton("my_flag", True)%>Yes</label> 
<label><%=Html.RadioButton("my_flag", False)%>No</label> 

* Lưu ý rằng cách này có thể thực sự có khả năng tương thích trình duyệt tốt hơn, tôi biết một số trình duyệt vẫn iffy về tên/id phân biệt

+1

Im sợ giải pháp này tạo ra html không hợp lệ trong đó id được hủy cấp phép –

+0

Nó rất tốt có thể. Như tôi đã nói, tôi không biết bất cứ điều gì về ASP.NET MVC, tôi không có ý tưởng cho dù đối số đầu tiên xác định id hoặc thuộc tính name. –

+0

Xác định cả id và tên. –

14

tôi không phải là một lập trình viên asp, vì vậy xin lỗi nếu tôi sẽ nói điều gì đó off: P thuộc tính

Label cho được tham chiếu để input id của. Vì vậy, bạn sẽ phải làm điều gì đó như

<input type="radio" name="rad1" id="rad1_1"><label for="rad1_1">Rad1</label> 
<input type="radio" name="rad1" id="rad1_2"><label for="rad1_2">Rad2</label> 
39

Bạn có hai cách khác nhau để thực hiện việc này.

Giải pháp đơn giản đầu tiên là nhúng nút radio bên trong thẻ <label/>.

<p> 
    <label><%=Html.RadioButton("option", "yes") %> Yes</label> 
</p> 

<p> 
    <label><%=Html.RadioButton("option", "no") %> No</label> 
</p> 

Đường thứ hai là liên kết từng nút radio với ID. Đây cũng là khá đơn giản với những lập luận htmlAttributes và nó cho phép linh hoạt hơn liên quan đến việc bố trí dạng:

<p> 
    <label for="option_yes">Yes:</label> 
    <%=Html.RadioButton("option", "yes", new { id = "option_yes" }) %> 
</p> 

<p> 
    <label for="option_no">Np:</label> 
    <%=Html.RadioButton("option", "no", new { id = "option_no" }) %> 
</p> 

Tôi muốn giới thiệu sau này, và nó có vẻ là một trong những bạn đang yêu cầu quá.

EDIT

Trong thực tế, bạn nên cung cấp cho các tranh cãi với ID thuộc tính không có vấn đề gì. Nếu bạn không làm điều này, trang web của bạn sẽ có nhiều phần tử với cùng một ID và điều này không xác thực được HTML.

+0

+1 I thích cách đầu tiên. Đây là không cần phải cung cấp cho mỗi nút radio một ID. Nhưng trình duyệt chéo này có tương thích không .. ?? – shashwat

5

Bạn có thể làm điều đó như thế này: (Điều này được sử dụng Razor, nhưng nó dễ dàng để dịch.)

@Html.RadioButtonFor(model => model.MyValue, true, new { id = "MyValue_True" }) 
<label for="MyValue_True">Yes, this is true</label> 

@Html.RadioButtonFor(model => model.MyValue, false, new { id = "MyValue_False" }) 
<label for="MyValue_False">No, this is false</label> 

Về cơ bản bạn tự xác định id thuộc tính cho các nút radio.

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