【问题标题】:Should I perform input validation on the forms or in the class set method? [closed]我应该对表单还是在类集方法中执行输入验证? [关闭]
【发布时间】:2017-08-26 18:16:41
【问题描述】:

假设我有一个存储客户信息的数据库,并且有一个具有各种形式的应用程序来注册客户,编辑客户,删除客户等......

输入验证(例如,检查客户的邮政编码格式是否正确)应该放在 Customer 类中还是在表单上完成?目前我在课堂上有它,如果值的格式不正确,我会抛出一个自定义异常。

【问题讨论】:

  • 你所做的是正确的方式(更好的方式)。如果您决定在 Web 应用程序或控制台应用程序中使用客户类怎么办:如果您在表单中进行验证,则需要重写验证。

标签: c# validation class input


【解决方案1】:

验证有两种情况:

  1. 必填
  2. 几乎需要

必填

您在类/后端进行的验证是您不能忽略的验证。如果这样做,这可以使您的数据处于heywired 状态。所以必须这样做!

几乎需要

UI 中的验证不是必需的,但几乎始终是优质应用的一部分。我们为用户构建应用程序,因此 UX(用户体验)至关重要。 UI 中的验证为用户提供即时反馈并保持较短的更正周期。随着表单的增长,这一点变得更加重要。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我不知道您使用的是哪个框架,但是将表单验证放在处理您的表格的类中会很有意义。这就是我目前使用https://book.cakephp.org/2.0/en/models/data-validation.html 的框架。这可能会有所帮助。

    【讨论】:

      【解决方案3】:

      这取决于您应用的架构。 如果您希望您的应用程序可扩展和模块化,我建议您接受 MVC 模式(模型、视图、控制器)。 在这种情况下,模型是:客户类(仅存储客户的数据 观点是:形式 您应该控制数据:检查输入,将数据存储在数据库中等。(业务逻辑)在一个名为 CustomerController 的类中。 MVC Model

      【讨论】:

      • 我有这样的东西。我有表单、类和数据库访问层(我存储所有 SQL 函数,即 UpdateCustomer)。但它并不完全相同,因为我正在检查 Customer 类中的输入,而是从访问层执行 SQL。我应该改变这个吗?
      • 我认为你应该只检查输入和所有员工(在一个单独的类中,让客户类只包含客户数据。这比将所有员工都放在客户类中要好。
      【解决方案4】:

      恕我直言,您应该在这两个地方都这样做。诸如必填字段之类的东西是 UI 验证的好例子,框架开箱即用地支持这一点。

      但这并不意味着您的业务层不应该仍然检查所需的值是否存在,特别是如果您有可以在没有 UI 层的情况下调用的 api。此外,业务层必须验证更复杂的情况,例如现有用户名等。

      【讨论】:

        猜你喜欢
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        • 1970-01-01
        • 2021-03-09
        • 1970-01-01
        • 1970-01-01
        • 2015-06-26
        相关资源
        最近更新 更多