ASP.NET 加载时未选择 MVC RadioButtonFor
ASP.NET MVC RadioButtonFor Not Selected On Load
在 Stack Overflow 和其他地方还有许多其他问题,但我花了太多时间筛选它们以寻找答案,最终没有亲自问一个问题。我已经尝试了此处找到的许多解决方案,并且 none 有效。
我的问题如标题所述;我的单选按钮没有在页面加载时设置,我不知道为什么。
在下面的代码中,我的模型有一个布尔值 CanSubmit,canSubmitYes 和 canSubmitNo id 是使用
生成的 id
ViewContext.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"})
我尝试过的:
- 设置助手 HTML 属性中的
checked="checked"
属性 collection
- 删除所有 HTMLHelper 代码内容并简单地使用基本
<input type="radio" />
控件,由于某些原因它仍然没有在加载时被正确检查。
- 尝试使用 jQuery 事件在加载文档时设置它们的 'checked' 属性,这也没有用。 (来自
.prop("checked", true)
)
- 将 html 助手的格式从
"false"
更改为 false
以试图强制它理解 属性 是布尔值而不是字符串
这些控件没有其他 javascript 事件设置值。当我观察到我点击按钮时,objects 上的 HTML 值没有改变——这让我认为 'clicked'/'checked' 属性 是一个伪 属性 或浏览器持有的状态。
我是不是漏掉了一些重要的东西,或者我偏离了基本点?
提前致谢!
更新
我确定它与我使用的局部变量有关。我现在再次将它们置于基本 <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 多个这样的配对。
我刚刚发现我没有回答这个问题。
我们最终没有找到问题所在,但最终采用了不同的方法。此外,我不再从事那个项目,所以我无法充分更新这个问题。
在 Stack Overflow 和其他地方还有许多其他问题,但我花了太多时间筛选它们以寻找答案,最终没有亲自问一个问题。我已经尝试了此处找到的许多解决方案,并且 none 有效。
我的问题如标题所述;我的单选按钮没有在页面加载时设置,我不知道为什么。
在下面的代码中,我的模型有一个布尔值 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"})
我尝试过的:
- 设置助手 HTML 属性中的
checked="checked"
属性 collection - 删除所有 HTMLHelper 代码内容并简单地使用基本
<input type="radio" />
控件,由于某些原因它仍然没有在加载时被正确检查。 - 尝试使用 jQuery 事件在加载文档时设置它们的 'checked' 属性,这也没有用。 (来自
.prop("checked", true)
) - 将 html 助手的格式从
"false"
更改为false
以试图强制它理解 属性 是布尔值而不是字符串
这些控件没有其他 javascript 事件设置值。当我观察到我点击按钮时,objects 上的 HTML 值没有改变——这让我认为 'clicked'/'checked' 属性 是一个伪 属性 或浏览器持有的状态。
我是不是漏掉了一些重要的东西,或者我偏离了基本点?
提前致谢!
更新
我确定它与我使用的局部变量有关。我现在再次将它们置于基本 <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 多个这样的配对。
我刚刚发现我没有回答这个问题。
我们最终没有找到问题所在,但最终采用了不同的方法。此外,我不再从事那个项目,所以我无法充分更新这个问题。