【问题标题】:ASP.NET MVC RadioButtonFor Not Selected On Load加载时未选择 ASP.NET MVC RadioButtonFor
【发布时间】:2016-07-27 02:15:47
【问题描述】:

在 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"})

我尝试过的:

  • 在 helpers HTMLAttributes 集合中设置 checked="checked" 属性
  • 去掉所有 HTMLHelper 代码内容,只使用基本的 <input type="radio" /> 控件,但由于某种原因,在加载时仍未正确检查。
  • 尝试使用 jQuery 事件在加载文档时设置它们的“已检查”属性,这也不起作用。 (通过.prop("checked", true)
  • 将我的 html 帮助程序格式从 "false" 更改为 false 以尝试强制它理解该属性是布尔值而不是字符串

没有其他 javascript 事件为这些控件设置值。当我观察到我单击按钮时,对象上的 HTML 值没有更改 - 这使我认为“单击”/“检查”属性是伪属性或浏览器持有的状态。

我是否遗漏了一些重要的东西,或者我在这里偏离了基础?

提前致谢!

更新

我已经确定它与我正在使用的局部变量有关。我现在再次将它们放在基本的<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 多个这样的配对。

【问题讨论】:

  • 这是一个 DotNetFiddle 你正在尝试做的事情。dotnetfiddle.net/MAqhYq
  • 是的,你所拥有的基本上就是我正在做的事情,但我的单选按钮没有被选中 - 因为你的单选按钮在你的小提琴中。
  • 可能是您定义id 参数的方式.. 只需在此处使用字符串值或完全关闭它,看看会发生什么
  • 你是说两个单选按钮都没有被选中吗?您显示的代码工作正常。如果CanSubmit 的值为true,将选择第一个按钮,否则将选择第二个。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多