我有一个包含8个不同单选按钮组的页面(“是/否”按钮组)。最初我已经将html编码为'No'按钮进行渲染,但现在我需要渲染而不选择任何按钮。
我删除了'checked = checked'并刷新了但仍然选择了NO按钮。我再次刷新,清除缓存,并在不同的浏览器上运行无济于事。我正在寻找帮助找到可能的原因。
我的MVC代码:
@Html.RadioButtonFor(m => m.IsFelon, true, new { @class = "commentBox RadioIf" })
<label for="PersonModel_Felon">Yes</label>
@Html.RadioButtonFor(m => m.IsFelon, false, new { @class = "commentBox" })
<label for="PersonModel_Felon">No</label>
它如何呈现:
<input class="commentBox" data-val="true" data-val-required="The ChildAbusePast field is required." id="ChildAbusePast" name="ChildAbusePast" type="radio" value="True" />
<label for="HistoryModel_ChildAbusePast">Yes</Label>
<input checked="checked" class="commentBox" id="ChildAbusePast" name="ChildAbusePast" type="radio" value="False" />
<label for="HistoryModel_ChildAbusePast">No</Label>
只有其他事情触及这个是一些jquery:
$(document).ready(function () {
$("input.commentBox").click(function () {
if ($(this).closest('div.editor-field2').children('input:checked').val() == "True") {
$(this).closest('div.formQuestion').children('div.hidden').slideDown(800);
} else {
$(this).closest('div.formQuestion').children('div.hidden').slideUp("fast");
}
});
});
答案 0 :(得分:1)
如果你没有初始化IsFelon,那么默认情况下,它将被设置为“False”,这是布尔类型对象的本质。
另一方面,如果你想在默认情况下取消选择无线电,那么你不应该使用bool,你会想要使用“bool?”它将默认值设置为“null”,因此不会选择任何无线电。
答案 1 :(得分:0)
模型的IsFelon
属性是否有值?如果它是标准布尔值,它会。因此,当您将该属性映射到值为False的单选按钮时,MVC会识别它们匹配并将按钮设置为checked
。
我能想到的最简单的解决方案是不将这些单选按钮映射到模型属性,而只是检索这些值并在回发时以编程方式在控制器中设置模型属性。您还可以考虑使IsFelon
成为可以为空的属性,但在MVC中使用可空属性可能涉及一些摆弄。