应用程序中的每个表单都有一组radiobuttons。选择后,只需要验证与该无线电按钮相关的某些字段。
我正在使用MVC 3并需要验证才能在客户端工作。
只需使用DataAnnotations我只能验证表单上的所有字段。
IValidatableObject不适用于客户端。
IClientValidatable看起来可能会起作用,但似乎我必须为每个标准DataAnnotation属性编写一个新属性。
RemoteValidation一次只能处理一个字段。
另一个选择是删除MVC3验证并使用jQuery完成所有操作。我没有这方面的问题,但是想使用MVC3并减少编码/维护以准备更大的项目。
我是否仍然可以使用MVC3验证,但是只要选择了radiobutton,就可以使用jQuery在验证中添加/删除验证字段?
如果有人可以提供一些建议来解决这个问题的最佳方法,我们将不胜感激。
答案 0 :(得分:3)
MVC 3默认使用jQuery的验证插件,该插件不会验证禁用的字段。如果选择了某些单选按钮,是否不再需要您不想验证的字段?如果是这样,那么您可以禁用这些元素并且不会对它们进行验证(请注意,这些禁用的字段也不会发布到服务器上。)
e.g。
$('input')。attr('disabled','disabled');
答案 1 :(得分:1)
对于复杂的验证,最好手动编码。 数据注释对于90%的验证需求非常有效,但对于What / If场景却失败了。
对于客户端,使用通过jQuery Validation Plugin呈现的事件驱动的自定义验证。对于服务器,请使用CustomValidation属性:
如果你有可重复使用的自定义验证,那么使用IClientValidatable是很好的,但是一次验证是浪费时间。
或者将RemotValidation与CustomValidation属性一起使用,该属性使多个字段无效。