ASP.NET MVC 3非侵入式验证和单选按钮
|
我正在尝试对单选按钮列表进行必要的验证,以强制用户选择一个选项以继续。验证确实有效,但是它仅在第一个单选按钮上输出元数据,并且仅将第一个单选按钮标记为类input-validation-error。
例:
<p>@Html.RadioButtonFor(x => x.Choices, SomeEnum.OptionOne)</p>
<p>@Html.RadioButtonFor(x => x.Choices, SomeEnum.OptionTwo)</p>
产生的HTML:
<p><input class=\"input-validation-error\" data-val=\"true\" data-val-required=\"required text\" type=\"radio\" name=\"Choices\" value=\"OptionOne\" /></p>
<p><input type=\"radio\" name=\"Choices\" value=\"OptionTwo\" /></p>
我希望两个单选按钮都获得验证错误类,否则可能会有使用户选择哪个选项的风险。
我能做什么?
没有找到相关结果
已邀请:
3 个回复
赣借
是
为什么?因为
意为一个特定属性生成一个html元素。您使用它从一个属性创建多个元素的方式不正确。 此外,查看这3个单选按钮的ID。他们差不多一样,不是吗?在HTML页面上具有相同ID的元素是否可以接受?绝对不!因此,需要修复某些问题。 尽管我认为通过开发新的Html扩展方法(参考2)可以更轻松地解决此问题,但我还是尝试了另一种解决方法(因为我很固执!)。 首先,我们需要更改剃刀代码:
然后,用一段JavaScript / jQuery魔术来解决我们的问题:
每当第一个单选按钮引发验证错误时,此JavaScript代码都会将错误css类(
)应用于单选按钮的父元素,即
元素。 并且只要验证错误消失(通过单击任意单选按钮元素),错误样式就会从父元素中删除。 它在IE和FF中效果很好,但不幸的是在Chrome中不起作用。原因是Chrome不支持
事件。我们可以使用以下解决方案来解决它:https://stackoverflow.com/a/10466236/538387,但也许稍后。 同样,我认为我们需要开发HTML扩展方法或改进和使用如下的EditorTemplate:https://gist.github.com/973482 参考文献: https://stackoverflow.com/a/7098541/538387 https://stackoverflow.com/a/3448675/538387 https://gist.github.com/973482 使用Jquery更改CSS属性时事件检测
仿普
回调来执行:
笛驮型迸