ASP.NET MVC 3模型的部分验证

Mar*_*arc 7 validation asp.net-mvc

我有一个非常大的60+问题表单,用户可以开始填写,保存在任何时候并保持不变.表单可以从数据库重新加载并随时完成,然后关闭它.

我有以下型号:

public class Questionnaire{

  [Required]
  public string Question1 { get; set; }

  [Required]
  [Range(1, 10)]
  public int Quesiton2 { get; set; }

  public string Question3 {get;set}
}
Run Code Online (Sandbox Code Playgroud)

当用户决定保存表单并执行完整验证时,我需要部分验证我的模型,包括在用户选择关闭表单时验证所需的文件.

实施它的最佳方法是什么?

Mem*_*per 2

从您的问题/示例中并不完全清楚您需要什么,但我发现通常在 MVC 中拆分我的视图模型是处理此类事情的最佳方法。

即,将您的实体分成几个部分,每个部分都可以单独进行验证。

然后使用分部视图/自定义编辑器模板为每个视图提供 UI 组件。

然后,您可以在需要时将这些组件组合在一种表单中,也可以根据需要在同一页面上提供单独的表单、多页面向导或单页面渐进式 AJAX 向导,或任何您想要的内容。

保持事情干燥和简单。

关键是不要害怕在需要时添加额外的视图模型层,以使您的数据对象符合UI 的要求

当您特别需要摆脱业务对象/实体时,不要受到它们的限制 - 将业务对象的各个部分从组成的视图模型片段重新组合在一起很容易。