我的问题是关于在 ASP.NET 4.0 WebForms 应用程序中实现自动保存的高性能方法。
我已经阅读了很多关于使用各种 jQuery 自动保存插件的内容,但它们似乎都最适合用于最少的输入元素。而且我还没有找到在用户返回表单时再次填充 ASP.NET 表单的解决方案。
我有一个包含很多元素的 FormView,以及一个嵌套的 listview 和 formview。使用 LinqDataSource 填充 FormView 及其子项。
Webserver 是 IIS 7。DB 是通过 Linq to SQL 的 SQL Server,我可以访问 MSMQ 或任何其他所需的服务器组件。
我已经使用一个将表单元素设置为 AutoPostBack 的 UpdatePanel 实现了自动保存,并使用了一些自定义 javascript 来强制异步请求是连续的。这是为了避免 Linq to SQL 中的并发错误。每个 UpdatePanel 异步回发都将整个表单保存到 SQL Server 中的草稿表中。它不是很优雅,但它确实有效 - 慢慢地!
问题是往返太慢了。这会导致在保存期间所做的表单更改不会被保存,并且如果用户在此期间滚动,表单也会跳回保存的元素。
所以我现在想我需要:
- 保持相同的方法,从表单中填充 linq 实体并将其保存在 MSMQ 中。然后,当用户提交表单(或者可能在会话结束时,或者他们下次再次登录时)时,我会将其拉出并坚持下去;或者
- 使用类似https://github.com/nervetattoo/jquery-autosave/的东西并将序列化的表单数据保存到 MSMQ。这会很快,但问题是当用户在后续会话中返回表单时,我不确定如何将数据放回 ASP.NET 表单中。
我还考虑过尝试在每个回帖中仅保存“发送”表单输入值。我可以在字典中执行此操作并在 MSMQ 中维护字典。
顺便说一句,我不能使用缓存或会话,因为即使用户关闭浏览器,我也必须确保保留表单数据。所以我需要更强大的东西。
对您的意见非常感兴趣-非常感谢所有帮助!
干杯..