2011-09-05 29 views
1

說我有:MVC組件

@Html.RadioButtonFor(modelItem => item.CheckerApproved, true) 
@Html.LabelFor(modelItem => item.CheckerApproved, "Accepted") 
@Html.RadioButtonFor(modelItem => item.CheckerApproved, false) 
@Html.LabelFor(modelItem => item.CheckerApproved, "Rejected") 

當我看着頁面的源代碼我有類似:

<input id="item_CheckerApproved" name="item.CheckerApproved" type="radio" value="True" /> 
<label for="item_CheckerApproved">Approved</label> 
<input checked="checked" id="item_CheckerApproved" name="item.CheckerApproved" title="" type="radio" value="False" /> 
<label for="item_CheckerApproved">Rejected</label> 

兩個相關聯的第一標籤輸入。

看起來輸入具有相同的ID。這不好嗎?如何解決它?

回答

1

您可以通過指定爲每個單選按鈕的ID,如下圖所示,然後簡單地使用繞過這個限制Html.Label並指定您的單選按鈕的ID以使其鏈接。

<%= Html.RadioButtonFor(model => model.CheckerApproved, true, new { id = "Approved" })%> 
<%: Html.Label("Approved")%> 

<%= Html.RadioButtonFor(model => model.CheckerApproved, false, new { id = "Rejected" })%> 
<%: Html.Label("Rejected")%> 
1

for屬性將設置爲您在LabelFor的謂詞中提供的任何內容。

不應該這是一個複選框,而不是兩個單選按鈕?

E.g:

@Html.CheckBoxFor(model => model.CheckerApproved) 
@Html.LabelFor(model => model.CheckerApproved) 

是的 - 這是壞到有重複的ID。例如,它不符合XHTML標準。

特別是如果你開始做客戶端腳本,您的選擇將有問題:

$('#item_CheckerApproved'); // which checkbox will this retrieve?