MVC3有选择地验证客户端

时间:2011-03-24 21:33:05

标签: asp.net-mvc-3 validation client-side

应用程序中的每个表单都有一组radiobuttons。选择后,只需要验证与该无线电按钮相关的某些字段。

我正在使用MVC 3并需要验证才能在客户端工作。

  1. 只需使用DataAnnotations我只能验证表单上的所有字段。

  2. IValidatableObject不适用于客户端。

  3. IClientValidatable看起来可能会起作用,但似乎我必须为每个标准DataAnnotation属性编写一个新属性。

  4. RemoteValidation一次只能处理一个字段。

  5. 另一个选择是删除MVC3验证并使用jQuery完成所有操作。我没有这方面的问题,但是想使用MVC3并减少编码/维护以准备更大的项目。

  6. 我是否仍然可以使用MVC3验证,但是只要选择了radiobutton,就可以使用jQuery在验证中添加/删除验证字段?

  7. 如果有人可以提供一些建议来解决这个问题的最佳方法,我们将不胜感激。

2 个答案:

答案 0 :(得分:3)

MVC 3默认使用jQuery的验证插件,该插件不会验证禁用的字段。如果选择了某些单选按钮,是否不再需要您不想验证的字段?如果是这样,那么您可以禁用这些元素并且不会对它们进行验证(请注意,这些禁用的字段也不会发布到服务器上。)

e.g。

$('input')。attr('disabled','disabled');

答案 1 :(得分:1)

对于复杂的验证,最好手动编码。 数据注释对于90%的验证需求非常有效,但对于What / If场景却失败了。

对于客户端,使用通过jQuery Validation Plugin呈现的事件驱动的自定义验证。对于服务器,请使用CustomValidation属性:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute(v=vs.95).aspx

如果你有可重复使用的自定义验证,那么使用IClientValidatable是很好的,但是一次验证是浪费时间。

或者将RemotValidation与CustomValidation属性一起使用,该属性使多个字段无效。