Stack Overflow和其他地方还有很多其他问题,但是我花了太多时间来筛选它们以获得答案而不是最终自己问一个。我尝试了很多这里找到的解决方案,但没有一个能够解决问题。
我的问题如标题所述;我的单选按钮没有在页面加载时设置,我无法弄清楚原因。
在下面的代码中,我的模型有一个布尔值CanSubmit,canSubmitYes和canSubmitNo id使用
生成idViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId("canSubmitYes")
和
ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId("canSubmitNo")
我的单选按钮和相应的标签当前设置如下:
@Html.LabelFor(Function(m) m.CanSubmit, "Yes", New With {.for = canSubmitYes})
@Html.RadioButtonFor(Function(m) m.CanSubmit, True, New With {.id = canSubmitYes, .class = "submit-toggle-yes"})
@Html.LabelFor(Function(m) m.CanSubmit, "No", New With {.for = canSubmitNo})
@Html.RadioButtonFor(Function(m) m.CanSubmit, False, New With {.id = canSubmitNo, .class = "submit-toggle-no"})
我尝试过:
checked="checked"
属性<input type="radio" />
控件,并且出于某种原因,它仍未在加载时正确检查。.prop("checked", true)
)"false"
更改为false
,以尝试强制它理解该属性是布尔值而不是字符串没有其他javascript事件设置这些控件的值。当我观察我点击按钮时,对象上没有更改HTML值 - 这让我认为“点击了”&#39; /&#39;已经检查过&#39; property是浏览器保存的伪属性或状态。
我是否错过了一些关键的东西,还是我离开这里?
提前致谢!
更新
我已经确定它与我使用的局部变量有关。我现在再次将它们放在基本的<input>
中,如果我没有连接它们,它们会按预期工作。只有当我尝试将它们与一个共同的name
(将它们联系在一起)的方式配对时,它们才能起作用。
<input name="radio@(Model.ID)" id="@canSubmitYes" type="radio" class="submit-toggle-yes" @(If(submitterPermission.IsSelected, "checked='checked'", "")) />
<label for="@canSubmitYes">Yes</label>
<input name="radio@(Model.ID)" id="@canSubmitNo" type="radio" class="submit-toggle-no" @(If(submitterPermission.IsSelected, "", "checked='checked'")) />
<label for="@canSubmitNo">No</label>
如果我删除了name=''
属性,那么它会在加载时正确检查正确的元素。我需要这些项目是独一无二的,因为页面上可能有50多个此类项目。
答案 0 :(得分:0)
我刚发现我没有回答这个问题。
我们最终没有发现问题,但最终采用了不同的方法。此外,我不再参与该项目,因此无法充分更新此问题。