2015-02-11 4 views
2

У меня есть радио кнопка, как показано ниже, хотя первая проверена, всегда отображается последняя, ​​указанная на странице формы. Зачем ? Как я могу это исправить?Выбрана кнопка радио MVC

@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"checked или checked="checked" или checked="anything") все устанавливает атрибут checked. Когда DOM считывается, проверяется первая, затем проверяется вторая и, наконец, последняя.

Если значение Собственость является IsSatisFied является Satisfaction.Maybe то кнопка второй радио будет выбран (это как модель переплетные работы)

+0

Как один динамически добавить проверяемый атрибут к соответствующему RadioButton? Предполагая, что список параметров строится динамически. – Kevin

+0

@ Кевин, вам нужно задать новый вопрос с соответствующими сведениями –

0

Вы используете неверный HTML-код. Правильный способ отметить то, что проверялось бы

{ @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) 
Смежные вопросы