ASP.NET MVC RadioButtonFor未加载时选中

时间:2015-10-27 14:42:50

标签: jquery asp.net-mvc vb.net radio-button radiobuttonfor

Stack Overflow和其他地方还有很多其他问题,但是我花了太多时间来筛选它们以获得答案而不是最终自己问一个。我尝试了很多这里找到的解决方案,但没有一个能够解决问题。

我的问题如标题所述;我的单选按钮没有在页面加载时设置,我无法弄清楚原因。

在下面的代码中,我的模型有一个布尔值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"})

我尝试过:

  • 在帮助程序HTMLAttributes集合中设置checked="checked"属性
  • 删除所有HTMLHelper代码并简单地使用基本的<input type="radio" />控件,并且出于某种原因,它仍未在加载时正确检查。
  • 尝试使用jQuery事件设置&#39;已检查&#39;他们在文件的负载上的属性,这也是行不通的。 (通过.prop("checked", true)
  • 将我的html帮助器格式从"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多个此类项目。

1 个答案:

答案 0 :(得分:0)

我刚发现我没有回答这个问题。

我们最终没有发现问题,但最终采用了不同的方法。此外,我不再参与该项目,因此无法充分更新此问题。