ASP.NET - 确保数据不会从 FormView 丢失的最佳方法

本文关键字:FormView 方法 最佳 NET 确保 数据 ASP | 更新日期: 2023-09-27 18:36:01

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

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

我的想法是,我们可以建立一个JSON字符串并使用jQuery使用AJAX发布到另一个页面,并将更改保存到数据库或将它们保留在会话中,直到他们单击保存,并始终警告他们未保存的更改。

这听起来合理还是我错过了任何明显的东西?网上有很多应用程序会自动保存,它们使用什么方法?

ASP.NET - 确保数据不会从 FormView 丢失的最佳方法

通常它们仅在客户端存储值。检查本地存储和会话存储:http://www.w3schools.com/html/html5_webstorage.asp

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

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

失去焦点可能不是这里的问题,问题可能是页面上的繁重代码导致它变慢。尝试编辑代码并将其更改为块。这样每个块仅在条件为真时才执行。通过这种方式,您可以将代码减少到其实际版本的近 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 可以帮助您:

读:http://coding.smashingmagazine.com/2011/12/05/sisyphus-js-client-side-drafts-and-more/

http://sisyphus-js.herokuapp.com/