我有一个非常大的60个问题表单,用户可以开始填写,保存在任何点并保持不变.表单可以从数据库重新加载并随时完成,然后关闭它.
我有以下型号:
public class Questionnaire{ [required] public string Question1 { get; set; } [required] [Range(1,10)] public int Quesiton2 { get; set; } public string Question3 {get;set} }
当用户决定保存表单并执行完整验证时,我需要部分验证我的模型,包括在用户选择关闭表单时验证所需的文件.
实施它的最佳方法是什么?
解决方法
从你的问题/例子中你并不完全清楚你需要什么,但我发现通常在MVC中拆分我的View Models是处理这种事情的最好方法.
即将您的实体分成几部分,每部分都可以自行验证.
然后使用部分视图/自定义编辑器模板为每个模板提供UI组件.
然后,您可以根据需要在一个表单中组合这些组件,或者根据需要在同一页面,多页面向导或单页渐进式AJAX向导或任何您想要的任何内容上提供单独的表单.
保持干燥和简单.
关键是不要害怕在需要时添加额外的View模型层,以使您的数据对象符合UI的要求.
当您特别需要不使用它们时,不要受业务对象/实体的限制 – 它很容易将业务对象的各个部分从构成的View Model部分重新组合在一起.