如何在用户退出之前每隔10秒自动保存一个Web表单。有没有使用system.thread.sleep类的方法。?或者是否有任何其他可行的方法来实现这一目标。我正在使用.net 2.0。提前谢谢。
答案 0 :(得分:1)
使用计时器并在您要保存的页面上,并设置间隔为10秒。并将所有表单数据保存在计时器的tick事件中。所以tick事件将在每10秒后执行一次,你的表格将被保存。
请参阅以下链接,了解与计时器刻度事件相关的示例以执行某项任务
答案 1 :(得分:1)
作为一个帮助你继续前进的提示,这里使用jQuery是一些代码:
var ajxAutoSaveTimer = null;
function TriggerChanges()
{
if(ajxAutoSaveTimer)
clearTimeout(ajxAutoSaveTimer);
ajxAutoSaveTimer = setTimeout(MakeAutoSave, 10000);
}
function MakeAutoSave()
{
// fix the data that you going to send here.
jQuery.ajax({
url: "PageName.aspx/MethodName",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function(data)
{
// you can make a tiny notification here
return;
}
error: function(responseText, textStatus, XMLHttpRequest) {
return;
}
});
}
jQuery(document).ready(function() {
jQuery(":input:not(*[ExcludeFromNotice])").bind('change', TriggerChanges);
});
现在我在这里做什么。
从这一行开始,我捕获了用户控件所做的所有input
。所有人都用我ExcludeFromNotice
标记的那个,因为其中一些我没有参加自动保存过程。
jQuery(":input:not(*[ExcludeFromNotice])").bind('change', TriggerChanges);
您可以在属性上将其设置为控件"ExcludeFromNotice=true"
。或者,您可以仅将类设置为您希望成为自动保存通知一部分的控件。
现在TriggerChanges()
我所做的就是创建一个在10秒后被用户不进行其他更改的时间。
其余部分是最难的,如果是MakeAutoSave()
,则需要收集并发布自动保存的数据。
一些额外的页面可以帮助您进行保存数据的ajax调用:
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
How to post form data in asp.net using ajax
答案 2 :(得分:0)
最好的方法是使用定时器控件,它们会触发tick事件,您可以在其上编写用于保存数据的代码,将定时器时间设置为10000.