Проверяя поведение атрибута checked
для переключателя , я обнаружил, что ваша проблема возникла, потому что атрибут checked
является логическим свойством, которое, когда атрибут присутствует, указывает, что соответствующий элемент ввода находится в проверенном состоянии независимо от того, его значения (checked="false"
совпадает с checked="true"
или checked="checked"
).
Если атрибут checked
присутствует для нескольких переключателей в одной группе, по умолчанию для последнего переключателя устанавливается значение checked
(см. эту скрипку на основе вашего исходного кода). Следовательно, вам нужно исключить атрибут checked
, когда для свойства CompanionReleaseRadio1.Checked
установлено значение false, с помощью @functions
встроенного помощника функции, как показано в примере ниже:
@functions {
private object SetRadioButtonChecked(bool isChecked, string RadioID)
{
// checked state from property
if (isChecked)
{
// checked attribute is present
return new { id = "CompanionReleaseRadio2" + RadioID, @checked = "checked" };
}
else
{
// checked attribute is not present
return new { id = "CompanionReleaseRadio2" + RadioID };
}
}
}
Затем вызовите эту встроенную функцию выше внутри RadioButton
помощника следующим образом:
@foreach (var companionReleases1 in Model.CompanionReleaseRadios1)
{
<div class="col-sm-4">
@Html.RadioButtonFor(model => Model.CompanionReleaseRadio1, companionReleases1.RadioID,
@SetRadioButtonChecked(companionReleases1.Checked, companionReleases1.RadioID))
<span class="checkbox-label">@companionReleases1.RadioText</span>
</div>
}
После этого все переключатели со свойством CompanionReleaseRadio1.Checked
, установленным на false
, должны были быть установлены в непроверенное состояние (см. эту скрипку для получения ожидаемого результата).
Справка:
Использование @functions на странице ASP.NET с синтаксисом Razor
Смежные вопросы:
Как создать функцию в шаблоне cshtml?
Переключатель проверки asp.net mvc3 на основе модели