【问题标题】:How do you validate the data in your ViewModel in the MVVM pattern?如何在 MVVM 模式中验证 ViewModel 中的数据?
【发布时间】:2009-04-23 10:06:03
【问题描述】:

我昨天听了this herding code podcast on MVC, MVP, MVVM 并被将整个 ViewModel 对象发送到验证器的想法震惊了,该验证器除了验证其中的所有字段并将其发回之外什么都不做。

  • 有人实施过这种类型的验证模式吗?
  • 在技术上看起来如何?

我正在考虑通过还有一个“FormPreparer”来扩展这个想法,它在将模型数据、字段元数据和其他用户和上下文数据输入其中之后接收整个 ViewModel,然后这个“FormPreparer”准备所有字段在视图上的表单上,例如

  • 日期字段由 DatePicker 控件表示
  • 电子邮件字段由带有电子邮件验证的文本框表示
  • 和例如客户字段是客户的下拉列表

元数据定义了每个字段的这些内容:

  • 类型(文本、日期、日期/时间、持续时间、电子邮件、网址、客户)
  • 控件(文本框、多行文本框、下拉菜单、单选按钮、复选框、点击按钮)
  • 标签(例如“名字”)
  • 帮助文本(例如“这是您在表格 4A 顶部找到的数字”)
  • 示例(“#123ABCD”)
  • 显示选项卡(例如,用于由多个选项卡区域组成的表单)
  • 显示区域(例如,用于将字段分组为区域的表单)
  • 显示顺序(例如组中字段的顺序)
  • 值(例如“Jim”)
  • 自动提示数据(用户开始输入时需要显示的名称数组)
  • 字段状态(只读、编辑、隐藏)

“FormPreparer”会结合所有这些信息,然后将数据呈现给 View :

  • 在适当的控件中显示所有表单数据(日期选择器,多行文本框中的描述等)
  • 自动处理所有验证
  • 只会显示当前用户可以查看的字段,并且只会让他编辑允许编辑的数据

有没有人按照这些思路编写过 WPF/MVVM 应用程序?

【问题讨论】:

    标签: wpf validation mvvm


    【解决方案1】:

    没有。我正在开发一个 WPF/MVVM 项目,但我们还没有采用这种通用的验证方法。我们正在每个视图模型中创建一个自定义验证方法,其中包含特定于每个视图模型的验证逻辑。

    一个可用于所有视图模型的通用验证例程会很棒。

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2023-03-17
      相关资源
      最近更新 更多