您如何避免在服务器和客户端重复验证?是否有一个Web编程平台可以从另一个生成一个,所以我不必保持两个同步?
您如何避免在服务器和客户端重复验证?是否有一个Web编程平台可以从另一个生成一个,所以我不必保持两个同步?
有些框架可以从服务器端验证配置生成客户端验证。
现在我不知道您使用的语言或框架,但也许这篇文章可能有所帮助: http://www.emadibrahim.com/2008/09/08/client-server-side-validation-in-aspnet-mvc/
他正在使用Castle Validator Component和JQuery,并根据服务器端验证属性添加了一些胶水来生成客户端验证。它适用于asp.net mvc。
/导演Asger
有些框架可以从服务器端验证配置生成客户端验证。
现在我不知道您使用的语言或框架,但也许这篇文章可能有所帮助: http://www.emadibrahim.com/2008/09/08/client-server-side-validation-in-aspnet-mvc/
他正在使用Castle Validator Component和JQuery,并根据服务器端验证属性添加了一些胶水来生成客户端验证。它适用于asp.net mvc。
/导演Asger
如今,大多数人放弃客户端脚本,只做服务器端。发送帖子时可以使用ajax,这样响应的重量比重新加载整个页面要轻一些。
仅需要服务器端验证,因为可以禁用客户端验证。
客户端验证不是必需的,但它会使您的应用程序在错误处理期间更具响应性,因为您不再需要向服务器提交表单并等待生成的页面返回。
精心设计的应用程序同时使用两者。
作为旁注,Ajax可用于某些类型的验证,例如检查用户注册表单上的重复用户名。但是,基本验证(例如检查字段是否仅包含数字)应该在没有它的情况下完成。
正如其他人所提到的,你应该保留重复,因为客户端验证是为了帮助应用程序更快地做出反应来帮助用户,但是,真正的验证是在服务器端,因为你永远不应该相信任何传入的东西,直到它已经过验证。您可能会在服务器端进行更广泛的验证,例如,如果需要检查数据源,例如,服务器端的用户名是唯一的,但用户名是否足够长,或者是电子邮件地址,可以在客户端和服务器端完成。
当有重复时,我倾向于发表评论,特别是如果我使用的是正则表达式,以确保其中一个中的更改在另一个中发生了更改。
良好的单元测试将有助于确保这两者始终保持同步。
我认为最好的方法是使用提供两者的组件。他们的代码已经过测试,您无需维护它。我用过 彼得布鲁姆的 过去的控制取得了巨大的成功。除此之外,我认为如果你想提供两个代码库,你将不得不维护两个代码库。有一个叫做的工具 脚本# 这可以帮助编译C#到Javascript(它做翻译,而不是真正的编译),但我不确定它对这种情况有多好。
在大多数情况下,最好在服务器端进行验证。您有许多不同的选项可以使这更容易,例如Ajax或在PHP中使用粘性表单。我个人倾向于在服务器端进行验证,因为用户可以选择关闭JavaScript,他们无法关闭服务器上的验证.....
您可以做的是让服务器端验证逻辑由Web服务运行,客户端验证可以通过AJAX调用,也可以在回发到服务器时调用。
Asp.net版本1有验证器控件来执行您的要求