我正在为我正在开发的一堆网站使用 jQuery 模板,并且已经到了需要决定如何去实现客户端验证的地步。Serverside 是一个处理各种模型的 Asp.Net Mvc Restful 服务。模型用 DataAnnotations 修饰来描述验证。下面是一个示例(请注意,我们正在为错误副本使用资源文件):
[Required(
ErrorMessageResourceType = typeof(Validation),
ErrorMessageResourceName = "HomeAddressRequired")]
[StringLength(250,
ErrorMessageResourceType = typeof(Validation),
ErrorMessageResourceName = "HomeAddressStringLength")]
public string Address { get; set; }
以前,我只使用 Razor(或旧的 Asp.Net 视图引擎,直到我们切换到 Mvc 3),它处理生成 jquery.validate.js 挂钩所需的所有客户端装饰。现在我正在使用 jQuery 模板,这不太可行。
我在这里看到三个选项:
修改模板以手动包含验证和错误副本。这很糟糕,因为我将被迫分别维护客户端和服务器端验证;它有点扼杀了 DataAnnotations 的整个想法。
利用 Razor 和 Mvc 3 不显眼的 javascript 方法来帮助我呈现模板。更好,因为它为我重现了验证,但性能受到了影响。也意味着我正在使用服务器端模板引擎...来呈现模板。我可以通过输出缓存将性能影响降到最低。
仅依靠为我的模型返回模型状态的远程验证,并为 jQuery Validate 编写我自己的适配器,以处理到正确元素的路由错误。这个解决了不得不使用 Razor 的问题,但会扼杀纯客户端验证,这意味着我必须编写一个复杂的插件。
理想情况下,当我们部署这个东西时,我应该能够将模板作为静态文件提供给客户端,而无需任何直接的后端依赖。
所以,对于我的问题:在我的模型服务器端利用 jQuery 模板客户端和 DataAnnotations,在不重复自己的情况下处理验证的最有效方法是什么?