0

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

a) 假设我有一个下拉菜单

b) 两个复选框,

c) 一个单选按钮列表

d) 一个复选框列表

e) 几个文本框和

f) 保存按钮

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

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

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

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

谢谢

4

1 回答 1

1

假设您使用的是非侵入式验证,则可以使用不同的方法。可以在客户端/服务器上启用和禁用某些字段的验证。

对于 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";
 });

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

于 2016-03-24T10:43:37.430 回答