自动保存表单直到会话到期

时间:2012-10-23 07:03:42

标签: c# asp.net .net

如何在用户退出之前每隔10秒自动保存一个Web表单。有没有使用system.thread.sleep类的方法。?或者是否有任何其他可行的方法来实现这一目标。我正在使用.net 2.0。提前谢谢。

3 个答案:

答案 0 :(得分:1)

使用计时器并在您要保存的页面上,并设置间隔为10秒。并将所有表单数据保存在计时器的tick事件中。所以tick事件将在每10秒后执行一次,你的表格将被保存。

请参阅以下链接,了解与计时器刻度事件相关的示例以执行某项任务

http://www.devasp.net/net/articles/display/1412.html

答案 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.