【发布时间】:2016-08-10 04:30:03
【问题描述】:
我们需要创建一个程序来收集运行表和其他表单数据。
所有表单都需要在输入时保存,除非明确丢弃,否则即使表单字段数据也是无效的。
用户应该始终能够“保存以备后用”,或者只是关闭他的窗口,并且应该保存数据。
问题是我必须对所有运行表进行索引和搜索,包括无效的。
我正在考虑几个选项:
- 有一个实现验证的相同类型的子类(这可行吗?)
- 将无效记录序列化为 XML 并将其存储在其他位置,直到其验证并永久保存。
- 不使用验证属性,而只是自定义验证(即使用
IValidatableObject接口),如果记录中的另一个属性指示应跳过验证,则将绕过验证,但我最终可能会得到大量数据同一个表中的数据库,也许这不是问题,只要我控制。我真的在考虑这个选项。
我真正的疑问是:
- 如果我将数据存储在其他地方,搜索将是一场噩梦
- 如果我在外部运行时方法中进行验证,避免使用验证属性,数据库中的列将不会反映真实属性要求(即必填字段)。
我想我会选择这个选项,因为必须搜索两个表更让我烦恼,而且确实这些列不会那么严格,但我仍然可以设置它们的 MaxLength 和其他一些重要属性这对数据库结构至关重要,但不会真正干扰验证过程。
真的不是说我必须将日期时间存储为字符串或降低到那么低。
我只是想听听遇到类似情况的人,可能有一些流畅的魔法方法......
【问题讨论】:
-
我会选择第二个选项
-
但它必须包含在搜索结果中。颈部疼痛。
-
你能实现一些“最终确定”阶段吗?例如,设置一个布尔值
Final,当它为真时,进行严格验证? -
是的,这是我的问题。
标签: c# asp.net-mvc entity-framework validation data-annotations