我处于一种情况,我必须实现位有线条件验证服务器端和客户端。故事如下
a)假设我有一个下拉列表
b)两个复选框,
c)一个单选按钮列表
d)一个复选框列表
e)少数文本框和
f)保存按钮
1)我的要求是当用户从下拉列表中选择一个数据并提交表单时,将显示除两个复选框之外的所有控件的验证消息。
2)当用户从下拉列表中选择一个数据并从2中选择一个复选框并提交表单时,将显示除复选框列表之外的所有控件的验证消息。
我知道要求有点连线,但我必须做类似的事情。所以请给我一些建议,比如如何通过自定义验证在mvc中解决它。
如何使用ValidationAttribute and IClientValidatable interface
在客户端和服务器端实现此验证。
感谢
答案 0 :(得分:1)
假设您正在使用Unobtrusive验证,可以使用不同的方法。可以在客户端/服务器上启用和禁用某些字段的验证。
对于ActionMethod中的服务器端,你可以这样做,
' Check if any of the two CheckBoxes are not checked, then
ModelState.Remove("CheckBox1")
ModelState.Remove("CheckBox2")
' Else
ModelState.Remove("CheckBoxList")
禁用客户端不显眼验证(请参阅https://stackoverflow.com/a/12179373/1361888),
$(function() {
var settngs = $.data($('form')[0], 'validator').settings;
settngs.ignore = ".ignore";
});
因此,您基本上可以启用或禁用客户端和服务器端字段的验证。这是一种简单的方法。