asp.net-mvc - 使用 Select2 ASP.NET MVC 时进行不显眼的验证

标签 asp.net-mvc validation jquery-select2 unobtrusive-validation

选择框转换为 Select2,不会自动与 ASP.NET MVC 框架中的非侵入式验证机制集成。
例如,在包含常规选择框(在模型定义中标记为必需)的表单上,在选择框中未选择任何选项的情况下提交表单,将导致选择框的边框和背景呈现微红色,并通过使用@Html.ValidationMessageFor,错误消息(如果有)可以显示在框旁边。但是,如果选择框转换为 Select2 组件,则上述功能将不再起作用。甚至验证错误消息也不会显示。
看来连验证错误消息都没有显示的原因是因为 Select2 将原始选择框的显示 CSS 属性更改为无(display:none),并且我猜不显眼的验证脚本不会为不可见生成错误消息字段。

有什么想法/解决方案吗?

最佳答案

这个问题实际上并不是 Select2 特有的,而是 jQuery 非侵入式验证器特有的。

您可以打开对隐藏字段的验证,如本 answer 中突出显示的那样.

$.validator.setDefaults({
    ignore: ''
});

正如评论所指出的,它在 $(document).ready() 内的匿名回调函数中不起作用。我必须把它放在顶层。

关于asp.net-mvc - 使用 Select2 ASP.NET MVC 时进行不显眼的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13996989/

相关文章:

c# - MVC - 使用 C# 用 Json 操作结果填充 ViewBag

javascript - libphonenumber javascript - 验证

php - Yii 外键验证规则

css - W3C 验证 - Wordpress DOC 类型

javascript - 选择 2 : Can't create new options longer than 2 characters (tag: true)

javascript - 使用 jQuery Validate 和 Select2 进行验证不起作用

c# - MVC4 自动映射我的 View 模型?

asp.net-mvc - 结构图处置 DataContext 对象

angularjs - $watch 不会因数据更改而触发

asp.net - ASP.NET MVC RC 中的 SetAttemptedValue 发生了什么?