33

使用 MVC3,您有两种添加自定义验证的新机制。它们是 (1) 子类 ValidationAttribute 或 (2) 实现 IValidatableObject。

ValidationAttribute 允许您通过实现 IClientValidatable(并通过 jQuery 注册新的适配器和方法)相对简单地添加客户端验证。

IValidatableObject 更适合不能重用的一次性验证要求。它还导致代码更简单。因此,在许多情况下,这将是我的选择。不幸的是,我没有看到使用这种方法实现客户端验证的简单方法。

所以问题是我缺少什么以及在使用 IValidatableObject 时如何获得 JS 验证?

4

3 回答 3

23

由于我在这里没有得到(有效的)答案,我问了几个微软的人,他们确认目前不可能。

布拉德·威尔逊:

目前,只有属性级别的验证器可以发出客户端验证(因为这与浏览器形式的输入验证的想法更好地吻合......从浏览器的角度来看,没有“模型”可言观点)。

斯图尔特韭菜:

我不相信您可以将客户端验证与 IValidatableObject 挂钩

于 2011-01-28T09:35:12.857 回答
4

http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx http://blogs.msdn.com/b/stuartleeks/archive /2010/07/28/asp-net-mvc-adding-client-side-validation-to-validatepasswordlengthattribute-in-asp-net-mvc-3-preview-1.aspx

ASP.NET MVC 3 现在在模型绑定时支持 IValidateObject 接口(除了 MVC 2 已经支持的所有其他验证方法),并将从中检索验证错误,并使用内置 HTML 表单助手。

ASP.NET MVC 3 还引入了一个新的 IClientValidatable 接口,它允许 ASP.NET MVC 在运行时发现验证器是否支持客户端验证。该接口的设计使其可以与各种验证框架集成。MVC 3 还引入了一个新的 IMetadataAware 接口,它简化了您如何为 ModelMetadata 创建过程做出贡献。

于 2011-01-20T15:10:35.013 回答
0

本文介绍了一种在 ASP.NET MVC 中的客户端验证中访问容器对象的方法。您可能可以使用它来开始使用您自己的客户端验证

于 2011-01-21T14:47:19.187 回答