【问题标题】:What are best practices for validating ASP.Net user controls?验证 ASP.Net 用户控件的最佳实践是什么?
【发布时间】:2009-03-27 01:02:00
【问题描述】:

我想知道是否存在任何最佳实践来指导什么应该和不应该进入验证器控件。我的想法和实践是它应该是基本的健全性检查(即用户是否输入了所有必需的输入?电话号码中是否有 10 位数字,电子邮件地址是否有效?等等),但我已经最近遇到了相当多的 asp.net 代码,这些代码使用验证器进行更复杂的验证(即 Web 服务调用以验证地址或用户 ID 和名称匹配)。

对于如何封装这些更复杂的任务,是否存在任何思想流派?我最初的直觉是验证器是不适合这项工作的工具,但我真的很想知道其他人对此有何看法或写过什么。谢谢!

【问题讨论】:

    标签: asp.net web-services validation


    【解决方案1】:

    你是对的。 p&p 团队在 Enterprise Library 中有一个很棒的块,名为 Validation Application Block (VAB)。

    如果您直接从用户那里收集值,则在 UI 中进行验证很好,但您可能需要做更多的事情。例如,您可能需要验证您的对象实例:

    • 在应用程序的单独层或组件中生成
    • 从缓存、存储库或第三方数据访问层检索
    • 作为对象实例或一组属性值从 Web 服务接收
    • 从现有值重建,可能通过从类似对象复制属性或使用从数据库检索到的值来填充它们

    我是 Enterprise Library 的忠实粉丝,并且对 VAB 有很好的体验。如果您不熟悉 EntLib,第一次可能会很困难 - 但之后会很糟糕!

    VAB 让您可以选择在一个地方创建、运行和托管您的规则,但可以在需要的地方调用。

    使用 ASP.NET 和 VAB 需要 15 秒:

    http://www.15seconds.com/Issue/070607.htm

    Tom Hollander 关于 VAB 的博客

    http://blogs.msdn.com/tomholl/archive/2006/11/27/validation-application-block-revealed.aspx

    【讨论】:

    • 这并不是说我要验证用户输入之外的其他内容,而是用户输入的验证很复杂并且可能很昂贵。在查看了您的链接并进行了一些谷歌搜索后,我认为 VAB 也不是正确的工具。
    • 啊哈...您可能应该阅读/尝试 ASP.MVC。 ASP.NET 它是一个不错但有点混杂和肮脏的框架。通过关注点分离(模型、视图、控制器)和基于 MVC 的验证工具(即 xVal),也许您会找到更好的答案。
    • 我肯定更愿意使用 ASP.MVC,但不幸的是,这是今天不会去任何地方的遗留代码。
    • 啊哈...也许将所有验证器重构为类(使用策略模式或将规则与责任链模式链接起来?)
    【解决方案2】:

    我不知道这是否是最佳实践,但我个人认为,唯一应该在客户端验证的是可以在客户端完全验证的东西。换句话说,如果您必须调用服务器才能执行验证,那么您已经失去了在客户端验证所带来的任何性能提升。 (这就是验证在客户端进行的原因——通过避免访问服务器来获得性能。)

    由于您的业务对象正在(或应该)对提交执行相同的验证,因此从编码和维护的角度来看,允许表单提交并在此时执行所有验证更有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-24
      • 2017-06-26
      • 2023-03-12
      • 2010-09-12
      • 2023-02-03
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多