如何保存无效数据
本文关键字:无效 数据 保存 何保存 | 更新日期: 2023-09-27 18:01:31
我们需要创建一个程序来收集运行表和其他表单数据。
所有表单都需要在键入时保存,除非显式丢弃,否则即使表单字段数据也是无效的。
用户应该总是能够"保存为以后",或者只是关闭他的窗口,数据应该被保存。
问题是我必须让所有的runsheet索引和搜索,包括无效的。
我在看几个选项:
- 有一个相同类型的子类来实现验证(会工作吗?)
- 将无效记录序列化为XML并将其存储在其他地方,直到其验证并永久保存。
- 不使用验证属性,但只是自定义验证(即使用
IValidatableObject
接口),这将绕过验证,如果记录上的另一个属性表明验证应该被跳过,但然后我可能最终在同一表中的数据库中有很多数据,也许这不是一个问题,只要我控制。我真的在考虑这个选项。
我真正怀疑的是:
- 如果我将数据存储在其他地方,搜索将是一场噩梦
- 如果我在外部运行时方法进行验证,避免使用验证属性,数据库中的列不会反映真实的属性要求(即必需的字段)。
我想我会选择这个选项,因为必须搜索两个表更困扰我,也因为确实列不会那么严格,但我仍然可以设置它们的MaxLength
和其他一些重要的属性,这些属性对数据库结构至关重要,但不会真正干扰验证过程。
实际上,我不必将datetime存储为字符串或那么低。
我只是想听听那些面临类似情况的人的意见,他们可能有一些顺利的神奇方法…
我想我只是想在模型中进行非常无干扰的验证(即MaxLength等),以及确定模型是否应该在没有验证的情况下保存的属性,然后实现IValidatableObject
,我将实现所有所需的验证属性作为自定义自定义验证。
如何将它们全部保存为cookie在用户浏览器中作为字符串的形式(字符串在clientSide不需要验证,除非你绑定它)。对数据库提交使用服务器验证。
点击这里了解更多关于将数据保存到cookie中的信息:
在cookie中存储多个值
正如我所说的在你的模型中不使用客户端验证
只需使用ViewModels并将ViewModel保存在Cookies中。然后在你的控制器上验证他们当用户想最终保存到数据库