C# ASP.NET—确保数据不受干扰的最佳方法;你没有从FormView迷路吗?

C# ASP.NET—确保数据不受干扰的最佳方法;你没有从FormView迷路吗?,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,我有一个ASP.NET应用程序-系统的一部分包含相当长的FormView,用于在系统上创建或更新作业。我们的客户担心的一个问题是潜在的数据丢失-即用户在表单上进行更改,而忘记单击“保存”。我们已经解释过,web本身就是无状态的,这使得它很难实现,但是这仍然是一个很大的问题 显而易见的“解决方案”是在每次值更改时都发回,但即使使用UpdatePanel,速度也非常慢,用户也会丢失其关注的列。我们还考虑捕获任何链接,并给用户提示说他们没有保存,但会留下很多变量,例如关闭浏览器 我的想法是,我们可以构

我有一个ASP.NET应用程序-系统的一部分包含相当长的FormView,用于在系统上创建或更新作业。我们的客户担心的一个问题是潜在的数据丢失-即用户在表单上进行更改,而忘记单击“保存”。我们已经解释过,web本身就是无状态的,这使得它很难实现,但是这仍然是一个很大的问题

显而易见的“解决方案”是在每次值更改时都发回,但即使使用UpdatePanel,速度也非常慢,用户也会丢失其关注的列。我们还考虑捕获任何链接,并给用户提示说他们没有保存,但会留下很多变量,例如关闭浏览器

我的想法是,我们可以构建一个JSON字符串,并使用jQuery使用AJAX发布到另一个页面,或者将更改保存到db中,或者将其保存到会话中,直到他们单击save,并始终警告他们未保存的更改


这听起来合理吗?还是我遗漏了什么明显的东西?有很多在线应用程序可以自动保存,它们使用什么方法?

通常它们只在客户端存储值。检查本地存储和会话存储:

显而易见的“解决方案”是在每次值更改时回发

这是一个很好的解决方案,因为一旦用户做出更改,您就可以保存数据。它的理想现在是一天

失去焦点,可能不是这里的问题,问题可能是页面上繁重的代码导致速度减慢。尝试编辑代码并将其更改为块。因此,每个块仅在条件为真时执行。通过这种方式,您可以将代码减少到实际版本的1/4

我们还考虑捕获任何链接,并给用户提示说他们没有保存,但会留下很多变量,例如关闭浏览器

是的,但是为了最小化这一点,您可以尝试使用一个简单的技巧,使用
|
操作符。检查是否有任何更改,如果更改,则通知用户并中断执行。像这样:

if(value == changed) {
  alert('You have not saved yet!');
  return false;
} else if (sec_value == changed) {
  // go on..
}
这意味着,如果您发现一个未保存的值,您将停止代码的执行,这样浏览器就不会查找更多的值

您可以使用第一个想法,将数据保存在数据库中。因为用户不喜欢坚持会话,他可能会删除所有缓存和cookie,甚至重新安装一个新的操作系统,所以这是一个问题。你应该一直把数据放在你这边


如果你总是警告他们,他们会厌倦你的JS警报。由于这个原因,在您这边通过ajax保存数据是最好的主意

使用Sisyphus.js可以帮助您:

阅读:


我认为一种方法是将表单拆分为不同的部分/页面