ASP.Net MVC:位于不同类型的条件验证服务器端和客户端

时间:2016-03-24 08:16:13

标签: jquery asp.net-mvc-5 unobtrusive-validation validationattribute

我处于一种情况,我必须实现位有线条件验证服务器端和客户端。故事如下

a)假设我有一个下拉列表

b)两个复选框,

c)一个单选按钮列表

d)一个复选框列表

e)少数文本框和

f)保存按钮

1)我的要求是当用户从下拉列表中选择一个数据并提交表单时,将显示除两个复选框之外的所有控件的验证消息。

2)当用户从下拉列表中选择一个数据并从2中选择一个复选框并提交表单时,将显示除复选框列表之外的所有控件的验证消息。

我知道要求有点连线,但我必须做类似的事情。所以请给我一些建议,比如如何通过自定义验证在mvc中解决它。

如何使用ValidationAttribute and IClientValidatable interface在客户端和服务器端实现此验证。

感谢

1 个答案:

答案 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";
 });

因此,您基本上可以启用或禁用客户端和服务器端字段的验证。这是一种简单的方法。