【发布时间】:2016-12-14 06:40:32
【问题描述】:
我有一个 MVC 5 项目,我们正在从数据库记录创建单选按钮。
它在下面可以正常工作,但必须有一种方法可以不在那里进行 if 检查,并在事后甚至之前附加检查。
如下图所示,两个单选按钮创建的唯一区别是:new { @checked = "checked" }
@{
foreach (var item in Model.PaintColor)
{
if (item.DefaultChoice == true)
{
@Html.RadioButtonFor(m => m.pledge.PaintColorId,
item.ColorId.ToString(),
new { @checked = "checked" }
)
}
else
{
@Html.RadioButtonFor(m => m.pledge.PaintColorId,
item.ColorId.ToString()
)
}
@Html.Label("Color" + item.ColorId, item.ColorDesc)
}
<br />
}
【问题讨论】:
-
您不会(也不应该)添加
new { @checked = "checked" }-RadioButtonFor()方法会根据您绑定到的属性的值来执行此操作。如果pledge.PaintColorId的值与ColorId的值匹配,那么它将被正确选择(这就是模型绑定的工作方式)。而且你不需要.ToString() -
斯蒂芬,感谢您为我指明了正确的方向。我现在对此有了更好的理解。
-
作为旁注,你
<label>什么都不做(点击它不会检查相关的单选按钮。使用<label>@Html.RadioButtonFor(m => m.pledge.PaintColorId, item.ColorId, new { id = "" })<span>@item.ColorDesc</span></label>(注意new { id = "" }删除id属性,所以你不生成无效 html 的重复项) -
标签的好主意。关于 ID,我实际上更改为: new { id = string.Format("RbColor_{0}", ColorId) } 因为我需要在选择单选按钮时放入一些 jQuery 逻辑。
-
从你的subsequent question 我现在明白为什么你认为你需要一个
id属性,但你不需要(也不应该) - 请参阅我对另一个问题的回答中的脚本。
标签: asp.net-mvc razor