jquery - 自动保存和重新填充大型 ASP.NET 表单的性能良好的方法

标签 jquery asp.net updatepanel msmq autosave

我的问题是关于在 ASP.NET 4.0 WebForms 应用程序中实现自动保存的高性能方法。

我已经阅读了很多有关使用各种 jQuery 自动保存插件的内容,但它们似乎都最适合用于最小的输入元素。而且我还没有找到一种解决方案,可以在用户返回表单时再次填充 ASP.NET 表单。

我有一个包含很多元素的 FormView,以及一个嵌套的 ListView 和表单 View 。使用 LinqDataSource 填充 FormView 及其子项。

Web 服务器是 IIS 7。数据库是通过 Linq to SQL 的 SQL Server,我可以访问 MSMQ 或所需的任何其他服务器组件。

我已经使用 UpdatePanel 实现了自动保存,并将表单元素设置为 AutoPostBack,并使用一些自定义 JavaScript 来强制异步请求按顺序进行。这是为了避免 Linq to SQL 中的并发错误。每个 UpdatePanel 异步回发都会将整个表单保存到 SQL Server 中的草稿表中。它不是很优雅,但确实有效 - 慢慢地!

问题是往返太慢。这会导致在保存期间所做的表单更改不会被保存,并且如果用户同时滚动,表单也会跳回到已保存的元素。

所以我现在认为我需要:

  1. 保持相同的方法,从表单填充 linq 实体并将其保存在 MSMQ 中。然后,当用户提交表单时(或者可能在 session 结束时,或者当他们下次再次登录时),我会将其拉出并保留它;或
  2. 使用类似 https://github.com/nervetattoo/jquery-autosave/ 的内容并将序列化的表单数据保存到MSMQ。这会非常快,但问题是当用户在后续 session 中返回表单时,我不确定如何将数据放回到 ASP.NET 表单中。

我还考虑过尝试在每次回发时仅保存“发送”表单输入值。我可以在字典中执行此操作并在 MSMQ 中维护字典。

顺便说一句,我无法使用缓存或 session ,因为即使用户关闭浏览器,我也必须确保保留表单数据。所以我需要更强大的东西。

对您的意见非常感兴趣 - 非常感谢所有帮助!

干杯..

最佳答案

在之前的工作中,内部带有隐藏按钮或计时器的控制面板效果很好。用户在自动保存时/之后添加更多内容是正常的。这就是为什么它是自动保存而不是最终的事情。这些更改将在下次自动保存时保存。

在整个表单的页面中使用普通的 UpdatePanel(控件不在其中,其中只有计时器控件或按钮控件),不需要我使用顺序 JS 等执行任何操作。我认为您可能“非常”经常进行自动保存?对于大型表格来说,30-120 秒应该没问题。

通常情况下,您在 MSMQ 或 DB 或其他任何地方都会有草稿,如果用户在表单上工作时存在,则从中填写,如果不存在,则正常工作。

jQuery 插件看起来也很有趣。

关于jquery - 自动保存和重新填充大型 ASP.NET 表单的性能良好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5148598/

相关文章:

asp.net - 不活动时停止 UpdatePanel

javascript - 使用 jQuery 触发 keyup 事件

javascript - jQuery 无法使用 .html() 更改 html

jquery - 将 html 页面加载到 jqueryui 对话框的 div 中并编辑内容

c# - 了解模拟权限

asp.net - 更新Panel渲染表行错误

c# - 官方推荐的创建 ASP.NET Webforms 应用程序的技术是什么?

javascript - 使用 For 循环在 Javascript 中创建表

javascript - 我认为我的网站已被感染

c# - 采用 MVC 4 或 5 的 MEF - 可插拔架构 (2014)