2 回答
TA贡献1995条经验 获得超2个赞
通过检查checked单选按钮的属性行为,我发现您的问题发生了,因为checked属性是一个布尔属性,当该属性存在时表示相应的输入元素处于选中状态,而不管其值如何(与orchecked="false"相同)。checked="true"checked="checked"
如果checked同一组中的多个单选按钮存在属性,则默认情况下它将最后一个单选按钮设置为checked(根据您的原始代码查看此小提琴)。checked因此,当属性设置为 false 时,您需要CompanionReleaseRadio1.Checked使用@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然后在helper中调用上面的内联函数,如下所示:
@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都应该设置为未选中状态(有关预期结果,请参见this fiddle)。
TA贡献1818条经验 获得超8个赞
我创建了一个 Windows 应用程序并在 Form1 上添加了一个 RadioButton。并将选中的属性设置为单选按钮的“fasle”。但根据 Windows 应用程序的默认行为,它标记为检查了至少一个单选按钮。
一旦表单及其控件被加载,那么只有我们可以将单选按钮标记为选中 = false。
在 windows 应用程序中,windows 窗体有一个事件 Shown()。所以我们有代码在显示的事件上标记checked = false,它按预期工作。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
radioButton1.Checked = false;
}
}
- 2 回答
- 0 关注
- 96 浏览
添加回答
举报