我的问题是在ASP.NET 4.0 WebForms应用程序中实现自动保存的高性能方法。
我已经阅读了很多关于使用各种jQuery自动保存插件的内容,但它们似乎最适合用于最小的输入元素。我还没有找到一个解决方案,当用户返回到表单时,它将再次填充ASP.NET表单。
我有一个包含很多元素的FormView,以及一个嵌套的listview和formview。使用LinqDataSource填充FormView及其子代。
Webserver是IIS 7.数据库是通过Linq to SQL的SQL Server,我可以访问MSMQ或任何其他所需的服务器组件。
我已经使用表单元素设置为AutoPostBack的UpdatePanel实现了自动保存,并使用了一些自定义javascript来强制异步请求是顺序的。这是为了避免Linq to SQL中的并发错误。每个UpdatePanel异步回发都将整个表单保存到SQL Server中的草稿表中。它不是很优雅,但确实有效 - 慢慢来!
问题是往返太慢了。这会导致在保存期间进行的表单更改无法保存,如果用户同时滚动,则还会跳转到保存的元素。
所以我现在想我需要:
我还想过尝试在每个帖子上只保存'发送'表单输入值。我可以在字典中执行此操作并在MSMQ中维护字典。
顺便说一句,我无法使用缓存或会话,因为即使用户关闭浏览器,我也必须确保保留表单数据。所以我需要更强大的东西。
对您的意见非常感兴趣 - 非常感谢!
干杯..
答案 0 :(得分:0)
在之前的工作中,控制面板上有隐藏按钮或计时器,工作得很好。在自动保存时/用户添加更多内容是正常的。这就是为什么它是自动保存而不是最终的原因。这些更改将保存在下一次自动保存中。
在整个表单的页面中使用正常的一个UpdatePanel(不在其中的控件,在其中只有一个计时器控件或按钮控件),不要求我对顺序JS做任何事情。我认为你经常“非常”自动保存吗?对于大型表格,30-120秒应该没问题。
通常情况下,你会在MSMQ或数据库或其他任何东西中起草东西,如果用户在表单上工作时存在,填写它,如果没有,则正常工作。
jQuery插件似乎也很有趣。