2011-03-24 70 views
1

我正在处理一个包含大量文本框/下拉菜单/等的页面以供填写。其中大部分将进行某种自定义验证。我应该注意到它没有实际大小 - 全部只是字符串或整数值。ASP.NET开发中的自定义验证器 - 清理vs高效

我总是会听到(并且通常总是同意)尽可能多的验证应该在客户端而不是在服务器上执行,但在这种情况下我不确定。这里的区别在于这个项目将被传递给一个知道计算机但仍然是编程新手的IT人员 - 他将负责对这些定制验证在未来的工作方式进行次要更新和更改。

我的想法从尽可能高效转向效率低下但更具可读性。我专门为我的所有验证创建了一个新类,这些验证将在整个网站中使用。然而,通过在这个类中强制所有的自定义验证代码,我可以消除任何我可能能够执行的客户端验证。我还应该注意,每个需要自定义验证的页面通常需要执行至少一次服务器端验证,所以我永远无法使用客户端100%。考虑到活动的相对较低的级别该网站(现在和未来),你会认为这是一个可接受的解决方案?或者你是否总是希望尽可能多地对客户进行验证,以提高响应能力,即使它将使未来可能对其做任何事的人更加混乱?

+0

开箱即用asp.net验证器...他们将验证客户端和服务器端。只是不要忘记检查:如果(Page.IsValid)在服务器端。当你按下提交按钮 – 2011-03-24 14:01:56

+2

@guy schaller:uff ...更好地阅读这个问题:'执行某种自定义验证' – 2011-03-24 14:04:00

+0

这些肯定被用于最基本的东西,比如比较,必填字段等。不需要编写任何自定义代码。大多数使用的是CustomValidator,根据我自己的计算结果,我无法用预构建的工具完成返回true/false – 2011-03-24 14:05:14

回答

1

客户端验证的好处是用户不必等待页面回发。

验证约束最好在服务器端声明。否则,某人可能会在其浏览器上禁用JavaScript并将损坏的数据发送到您的数据库。

如果你想获得客户端验证的速度,但保持客户端清洁维护,你可以订阅每个表单输入的onblur事件来做一个AJAX调用并验证模型,然后将表单限制为如果表格无效,请勿提交。这可以全部考虑到一个外部的.js文件中,所以你所有的IT人员必须做的就是包含它,并从那里只使用HTML。

0

你总是想在我看来更好的用户体验。一般来说,如果您的代码不会为用户体验增加价值,那么在后端如何实施它并不重要。话虽如此,你应该总是试着编写“可维护”的代码。如果“杂乱”的代码是你暂时可以做的最好的,那么添加解释它为什么的文档。