我有一个ASP.NET应用程序 - 系统的一部分包含相当长的FormView,用于在系统上创建或更新作业。我们的客户关心的一个问题是潜在的数据丢失 - 即用户在表单上进行更改,而忘记单击“保存”。我们已经解释过,网络本质上是无国籍的,这使得它很难,但这仍然是一个大问题。
每次更改值时,显而易见的“解决方案”都会回发,但即使使用UpdatePanel,它也会非常慢,并且用户会丢失其焦点列。我们还在考虑捕获任何链接并给用户提示他们没有保存,但它留下了许多变量,例如他们关闭浏览器。
我认为我们可以构建一个JSON字符串并使用jQuery来使用AJAX发布到另一个页面,并将更改保存到数据库中,或者将它们保存在会话中直到他们单击“保存”,并始终警告他们未得到改变。
这听起来合情合理还是我遗漏了哪些明显的东西?网上有很多自动保存的应用程序,他们使用什么方法?
答案 0 :(得分:0)
通常它们仅在客户端存储值。检查本地存储和会话存储: http://www.w3schools.com/html/html5_webstorage.asp
答案 1 :(得分:0)
明显的“解决方案”是每次更改值时回发
它是一个很好的解决方案,因为您可以在用户进行更改后立即保存数据。它的理想现在是一天。
失去焦点,可能不是问题,问题可能是页面上的繁重代码,因为它会减慢速度。尝试编辑代码并将其更改为块。这样每个块只有在条件为真时才会执行。这样,您可以将代码减少到其实际版本的近1/4。
我们也在考虑捕获任何链接并给用户提示他们没有保存,但是它留下了许多变量,例如他们关闭浏览器。
是的,但为了最大限度地减少这种情况,您可以尝试使用||
运算符的简单技巧。检查任何内容,如果更改,则提醒用户并中断执行。像这样:
if(value == changed) {
alert('You have not saved yet!');
return false;
} else if (sec_value == changed) {
// go on..
}
这意味着,如果找到未保存的值,则停止执行代码,因此浏览器不会再查找任何值。
您可以使用您的第一个想法,即将数据保存在数据库中。因为用户不喜欢坚持会话,他可能会删除所有缓存和cookie,甚至重新安装新操作系统,所以这是一个问题。你应该始终保持数据。
如果你一直警告他们,他们会厌倦你的JS警报。由于这个原因,通过ajax保存数据是最好的主意!
答案 2 :(得分:0)