2010年在ASP.NET中进行客户端/服务器验证的最佳方法是什么?

3
首先有ASP.NET验证器,我们使用它们...然后团队中的一些人手动使用JavaScript进行操作...然后出现了许多jQuery验证库...然后MVC2推出了属性作为验证器..
我处理的应用程序有很多表单和各种验证(某些字段需要与数据库中的其他值进行比较,因此需要postball / ajax调用)..现在我有一堆ASP.NET自定义验证器和在服务器端计算的函数。
我能否得到一些关于最佳工具/组合来处理此工作并创建最小/最优雅代码的意见?纯服务器端解决方案? AJAX / jQuery?某个jquery插件?
例如,我有两个日期..我想确保第一个日期小于第二个日期...是否有封装这个功能的jQuery验证器?我的感觉是,如果我可以让jQuery插件处理一半更基本的验证,那么可以将我的代码减少一半。

只有MVC2数据注释可以实现“在一个地方编写并在服务器和客户端上验证”吗?WebForms中是否有类似的东西? - punkouter
或者不使用客户端验证,只使用注释和UpdatePanel来实现看起来像客户端的效果。 - punkouter
3个回答

1
如果您正在使用ASP.NET MVC,我建议在整个项目中使用DataAnnotations属性。其中包括用于必填字段和长度的“简单”属性,您还可以编写自己的自定义验证器来比较两个字段等等。Phil Haack在ASP.NET MVC中有一篇关于自定义验证器的文章,非常值得一读。

我们正在使用WebForms(虽然我希望有一天能够使用MVC,因为如果可以以干净的方式完成这些注释验证,那将是更好的选择)。 - punkouter

1

我通常使用jQuery RSV插件http://plugins.jquery.com/project/RSV来处理普通的验证工作,对于更复杂的验证(需要ajax调用等),我编写自己的jQuery函数,并始终在服务器端重新验证。


谢谢。这看起来是客户端情况的良好开端。 - punkouter

1

DynamicData适用于asp.net mvc和动态数据。

在WebForms中,我只使用了asp.net验证器方法。这并不意味着要复制和粘贴您可能拥有的所有自定义验证,即您根据需要添加自己的自定义验证器,并且仅在非常特殊的情况下使用额外的验证器连接到页面上的方法+脚本。

根据您如何构建代码,我希望能够利用一些围绕DataAnnotations的基础设施。我不能确定,您知道通常与asp.net相关的问题通常与实现细节有关,如果没有更好的选择,那么值得一试。

更新1:快速搜索得到:http://blogs.microsoft.co.il/blogs/gilf/archive/2010/04/08/building-asp-net-validator-using-data-annotations.aspx,这是一个基本的示例 - 但显示了一种可以利用Web Forms上的数据注释(用于服务器端)的方法。

更新2:另一个使用与上述相同方法的示例,但同时进行服务器端和客户端验证: http://geeks.ms/blogs/rcarreras/archive/2010/04/20/validando-asp-net-web-form-con-dataannotation-en-ambos-lado-cliente-y-servidor.aspx。虽然基本,但肯定可以作为基础来实现更完整的基于注释的自动验证。注意:根据您使用的内容,您可以在适当的位置自动添加验证器,尽管我必须警告说,如果您以前没有使用过动态添加验证器,则可能很难使其正常工作。


也许最简单的方法是在服务器端使用数据注释(dataAnnotations),在客户端使用jQuery?客户端版本的数据注释似乎相当复杂。 - punkouter
是的,示例足够简单,可以根据您可用的库进行适应。 - eglasius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接