Asp.net MVC保存回发对象树到数据库并检索它.(实现保存按钮)

本文关键字:保存 检索 实现 按钮 数据库 MVC net 对象 Asp | 更新日期: 2023-09-27 18:11:14

背景参考:应用程序是在asp.net mvc 3中构建的,后端是在实体框架和服务的帮助下构建的,对于前端,我将域对象复制到DTO对象中。DTO对象具有验证属性。

在此应用程序中工作的客户需要填写一些相当大的表单。填完后,它将被提交给其他人,他们必须评估这些信息。因此,在提交之后,状态变为挂起,直到验证。

但是当客户被叫走时,我希望客户能够保存其表单而不提交或丢失信息。我意识到我需要做两件事来实现这个目标。1是禁用保存按钮上的javascript验证。我想这不会太难。然后,步骤2将表单状态(dto和表示验证结果的某个对象)存储到数据库中。然后,当打开表单后,需要恢复这些值。我想要完成的是延迟的服务器端验证。

所以过程将是:

填写表单->推送保存->禁用js验证-> post对象到服务器->存储dto +验证在数据库-> ......->从数据库加载数据并附加到表单??->发送回客户端.....

从概念上讲,我认为这可能是一种方法。(如果你有其他想法或不同意我的意见,请告诉我)。

有谁知道怎么建造它吗?特别是数据库中数据的保存和加载。我需要什么来坚持?我能把它重新连接回上下文吗?另外,我没有使用cookie/session变量等等

Asp.net MVC保存回发对象树到数据库并检索它.(实现保存按钮)

这个问题的答案取决于DTO的验证机制,但是如果你可以将无效数据添加到DTO,那么你可以将DTO的对象图序列化为任何(二进制,数据合约,XML, Json等),一旦序列化,你可以将对象图存储在数据库中,下一次用户登录时,你可以将数据反序列化回DTO以呈现给视图。我会看一下不同的序列化器(DataContractSerializer在System.Runtime.Serialization中,并序列化为XML),看看哪个最适合您的需求。

        MemoryStream ms = new MemoryStream();
        System.Runtime.Serialization.DataContractSerializer serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(ViewModel));
        serializer.WriteObject(ms, vmInstance);