ASP.NET:同步客户端和服务器端验证规则

时间:2020-03-06 14:25:23  来源:igfitidea点击:

是否有任何简单,智能的方法来使客户端和服务器端验证规则保持同步?

在客户端,我们有JavaScript,也许是jQuery或者YUI之类的框架。

在服务器端,我们有ASP.NET WebForms或者ASP.NET MVC。

经过验证的是类似以下内容的东西:

  • 正确的电子邮件地址
  • 正确的家庭住址和邮政编码
  • 正确的信用卡号

等等。

解决方案

<asp:RegularExpressionValidator ...>(和其他asp.net验证器)实现客户端javascript和服务器端检查相同的规则。

编写包含验证规则的大型通用测试数据语料库,并针对该通用数据对验证器进行单元测试。

当规则更改时,我们可以通过更新测试数据并进行测试直到一切再次变为绿色来反映这一点。

我一直使用内置的验证器。例如,如果我们使用RegularExpressionValidator并提供ValidationExpression,它将使用相同的代码在客户端(如果可用)和服务器端进行验证。

我们可以通过派生自BaseValidatior来编写自己的自定义验证器。这样做允许我们通过覆盖EvaluteIsValid创建服务器验证。然后,如有必要,我们可以稍后添加客户端验证。

这不是一个实际的解决方案,但请查看CodePlex上的Axial项目。这是一个将Cto Javascript转换为Web的项目,并且具有一个控件,使我们可以使用相同的代码进行服务器端验证和客户端验证。它还没有准备好进行生产,但是我很想知道这是否是我们想要的。

我们可以尝试将企业库验证与ASP.NET集成一起使用。

xVAL比企业库验证容易得多,并且可以处理客户端和服务器的模型绑定验证。