asp.net mvc将回发对象树保存到数据库并检索它。 (实现保存按钮)

时间:2011-10-15 07:04:15

标签: c# sql asp.net-mvc

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

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

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

所以过程将是:

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

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

有没有人知道如何构建它。特别是从数据库中保存和加载数据。我需要坚持什么?我可以将它重新连接到上下文等...一个额外的注释,我不使用cookie /会话变量等等。

1 个答案:

答案 0 :(得分:1)

这个问题的答案取决于DTO上的验证机制,但是如果你可以向DTO添加无效数据,那么你可以将DTO的对象图序列化为任何内容(Binary,DataContract,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);