2015-02-11 120 views
2

由於某些原因,我有單選按鈕,即使選中了第一個按鈕,總是最後一個出現在表單頁面上。爲什麼?我怎樣才能解決這個問題?MVC單選按鈕被選中1

@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Not, new { @checked = "true" }) 
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Maybe, new { @checked = "false" }) 
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Yes, new { @checked = "false" }) 

回答

2

不要設置checked屬性。 @checked = "true"@checked = "false"(和checkedchecked="checked"checked="anything")全部設置checked屬性。當DOM被讀取時,第一個被檢查,然後第二個,最後檢查最後一個。

如果屬性格式的值是IsSatisFiedSatisfaction.Maybe然後第二個單選按鈕將被選中(這是如何模型結合的作品)

+0

怎樣一個動態的檢查屬性添加到相應的單選按鈕?假設選項列表是動態構建的。 – Kevin 2017-06-05 14:37:30

+0

@凱文,你需要提出一個新的問題與相關的細節 – 2017-06-05 22:01:03

0

您使用格式不正確的HTML。將標記爲選中狀態的正確方法是

{ @checked = "checked" } 

並且對於未選中的單選按鈕不包括checked屬性。

0

HTML specification說:

當下列任一現象時有發生, 如果發生後元素的檢查狀態爲真,則同一單選按鈕組中所有其他元素的檢查狀態必須設置爲假

  • 元素的檢查狀態設置爲true(無論什麼原因)。
  • 元素的名稱屬性被設置,更改或刪除。
  • 元素的表單所有者發生變化。

因此,作爲HTML解析下去的頁面,如果多個電臺是checked那麼最後一個將永遠被選中。因此,您只需要通過設置checked="checked"設置一個檢查屬性:

@Html.RadioButtonFor(
    model => model.IsSatisFied, 
    Satisfaction.Not, 
    new { @checked = "checked" }) 
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Maybe) 
@Html.RadioButtonFor(model => model.IsSatisFied, Satisfaction.Yes)