C# 我应该在表单上还是在类集合方法中执行输入验证?

C# 我应该在表单上还是在类集合方法中执行输入验证?,c#,validation,class,input,C#,Validation,Class,Input,比如说,我有一个存储客户信息的数据库,还有一个应用程序,它有各种各样的表单来注册客户、编辑客户、删除客户等等 输入验证(例如,检查客户的邮政编码格式是否正确)应该放在customer类中还是放在表单上?目前我在类中有它,如果值的格式不正确,我将抛出一个自定义异常。有两种验证情况: 必需的 几乎需要 要求的 您在类/后端中执行的验证是您不能忽略的验证。如果这样做,则会使数据处于heywired状态。所以我们必须这样做 几乎需要 UI中的验证不是必需的,但几乎总是高质量应用程序的一部分。我们为用户构

比如说,我有一个存储客户信息的数据库,还有一个应用程序,它有各种各样的表单来注册客户、编辑客户、删除客户等等


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

有两种验证情况:

  • 必需的
  • 几乎需要
  • 要求的 您在类/后端中执行的验证是您不能忽略的验证。如果这样做,则会使数据处于
    heywired
    状态。所以我们必须这样做

    几乎需要 UI中的验证不是必需的,但几乎总是高质量应用程序的一部分。我们为用户构建应用程序,因此用户体验(UX)至关重要。UI中的验证为用户提供即时反馈,并缩短纠正周期。随着形体的成长,这一点更为重要


    希望能有所帮助。

    有两种验证案例:

  • 必需的
  • 几乎需要
  • 要求的 您在类/后端中执行的验证是您不能忽略的验证。如果这样做,则会使数据处于
    heywired
    状态。所以我们必须这样做

    几乎需要 UI中的验证不是必需的,但几乎总是高质量应用程序的一部分。我们为用户构建应用程序,因此用户体验(UX)至关重要。UI中的验证为用户提供即时反馈,并缩短纠正周期。随着形体的成长,这一点更为重要


    希望这能有所帮助。

    我不知道您使用的是哪种框架,但将表单验证放在处理表的类中是有意义的。这就是我目前使用的框架。这可能会有帮助。

    我不知道您使用的是哪种框架,但将表单验证放在处理表的类中是有意义的。这就是我目前使用的框架。这可能会有所帮助。

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

    这取决于应用程序的体系结构。 如果您希望应用程序具有可扩展性和模块化,我建议您考虑MVC模式(模型、视图、控制器)。 在这种情况下,模型是:Customer类(仅存储客户的数据 观点是:形式 您应该将数据的控制权放在一个名为Example CustomerController的类中:检查输入、将数据存储在db中等等(业务逻辑)。
    IMHO,你应该在这两个地方都这样做。诸如必填字段是UI验证的好例子,框架支持开箱即用


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

    IMHO,您应该在这两个位置都执行此操作。如必填字段就是一个很好的示例大量的UI验证和框架支持这种开箱即用的方式


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

    您所做的是正确的方法(更好的方法)。如果您决定在web应用程序或控制台应用程序中使用customer类,该怎么办:如果您在表单中进行验证,则需要重写验证。您所做的是正确的方法(更好的方法)。如果您决定在web应用程序或控制台应用程序中使用customer类,该怎么办:如果您在表单中执行验证,则需要重写验证。我有类似的内容。我有表单、类和数据库访问层(在其中存储所有SQL函数,即UpdateCustomer)。但这与我在Customer类中检查输入不完全相同,而是从访问层执行SQL。我是否应该更改此设置?我认为您应该移动检查输入和所有员工(在一个单独的类中,让Customer类只包含Customer数据。这比将所有员工都放在Customer类中要好。我有类似的东西。我有表单、类和数据库访问层(在其中存储所有SQL函数,即UpdateCustomer)。但这与我在Customer类中检查输入不完全相同,而是从访问层执行SQL。我是否应该更改此设置?我认为您应该移动检查输入和所有员工(在一个单独的类中,让Customer类只包含Customer数据。这将比将所有员工都放在Customer类中要好。