使用MVC3,您有两种新的机制来添加自定义验证。这些是(1)子类ValidationAttribute或(2)实现IValidatableObject。
ValidationAttribute允许您通过实现IClientValidatable(并通过jQuery注册新的适配器和方法)相对简单地添加客户端验证。
IValidatableObject更适合于一次性验证要求,其中重用不是一种选择。它还导致更简单的代码。因此,它是我选择的一些场景。不幸的是,我没有看到使用这种方法实现客户端验证的简单方法。
所以问题是我缺少什么,以及在使用IValidatableObject时如何获得JS验证?
答案 0 :(得分:23)
由于我没有在这里得到(有效)答案,我问了几个来自微软的人,他们证实目前无法做到这一点。
布拉德威尔逊:Stuart Leeks:目前,只有属性级验证器可以发出客户端 验证(因为输入的想法更好 以浏览器的形式进行验证......没有“模型”可言 从浏览器的角度来看)。
我不相信你可以用它来连接客户端验证 IValidatableObject
答案 1 :(得分: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-预览1.aspx
ASP.NET MVC 3现在表彰了 模型时的IValidateObject接口 绑定(除了所有的 已经有其他验证方法了 支持MVC 2),并将 从中检索验证错误 自动标记/突出显示受影响 视图中的字段使用 内置的HTML表单助手。
ASP.NET MVC 3还引入了一个新的 IClientValidatable接口即 允许ASP.NET MVC发现 运行时验证器是否有 支持客户验证。这个 界面已经设计好了 可以与各种各样的 验证框架。 MVC 3也 介绍了一个新的IMetadataAware 界面,简化您的方式 贡献给ModelMetadata 创作过程。
答案 2 :(得分:0)
此article描述了在ASP.NET MVC中访问客户端验证中的容器对象的方法。您可以使用它来开始使用您自己的客户端验证