2010-05-25 17 views
1

我有一個表包含我需要的一些信息。所有這些行還包含一個帶有單選按鈕的列,以便用戶可以將其中一個行選爲缺省值。如何檢查正確的單選按鈕

當我從數據庫中取回數據並希望選擇當前默認的數據。

<% foreach (var item in (IEnumerable<Locale>) ViewData["Locales"]) { %> 
    <tr> 
     <td> 
      <%= Html.Encode(item.Language.Name) %> 
     </td> 
     <td> 
      <input type="radio" id="defaultLocale" name="defaultLocele" value="on" checked="<%= item.Default == false ? "false" : "true" %>" /> 
     </td> 

我也試着這樣做:

<input type="radio" id="defaultLocale" name="defaultLocele" value="on" checked="<%=item.Default == false ? "" : "checked" %>" /> 

但似乎沒有做正確的事。我總是最後檢查最後一行,這是不確定的。

+1

的可能重複[如何單選按鈕與asp.net的MVC結合工作(http://stackoverflow.com/questions/1586346/how-do-radio-buttons-work-with-asp-net -mvc-binding) – 2010-05-25 13:45:35

+0

謝謝@ÓlafurWaage,我在搜索時找不到那個人。我也會在那裏看一看。 – MrW 2010-05-25 14:00:58

回答

1

在html中檢查是沒有布爾值的真或假。 您必須設置checked =「checked」才能勾選複選框(如果您需要正確的語法)。但大多數瀏覽器接受任何checked =「...」作爲設置。所以你的checked =「false」被解釋爲「被選中」。所以你所有的複選框被解釋爲檢查,因爲只有一個可以,最後一個被檢查。

如果你不想讓它被檢查,你必須刪除整個checked =屬性。

<input type="radio" id="defaultLocale" name="defaultLocele" value="on" <%=item.Default ? "" : "checked=\"checked\"" %> /> 
+0

是的。這就是我正在做的第二塊代碼。或者我做錯了嗎?我真的認爲這將是一塊蛋糕,但我現在開始對此感到生氣。 – MrW 2010-05-25 13:49:11

+0

他的發言已經做到了。 @MrW - 嘗試在'checked'值中加入單引號,如下:'checked =「<%= item.Default == false?'':'checked'%>」' – 2010-05-25 13:49:13

+1

另外,由於您已經在測試對一個布爾值,真的沒有必要把它與'false'比較:'checked =「<%= item.Default?'checked':''%>」' – 2010-05-25 13:53:45