【问题标题】:Autosave a form till the session expires自动保存表单直到会话过期
【发布时间】:2012-10-23 07:03:42
【问题描述】:

如何在用户注销之前每 10 秒自动保存一次 Web 表单。有没有使用 system.thread.sleep 类的方法。?或者有没有其他可行的方法来实现这一点。我正在使用.net 2.0。提前致谢。

【问题讨论】:

  • 这是你需要设计的东西,制作一个调用 ajax 的计时器并保存表单 - 你希望在那里,每 10 秒一次,或者最好在用户进行一些更改后保存 10 秒.
  • @Aristos :是的..仅在用户进行一些更改后保存是个好主意。谢谢阿里斯托斯
  • @sachin 你使用 jQuery 吗?因为没有它是很难做到的。
  • @Aristos:不。我没有使用 jquery。但是根据您的建议,我打算使用它。你能给我一些提示或使用jquery的示例代码吗?

标签: c# asp.net .net


【解决方案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】:

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

    有关计时器滴答事件的示例,请参考下面的链接以执行某些任务

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

    【讨论】:

      【解决方案3】:

      最好的方法是使用定时器控件,它们会触发tick事件,你可以在上面写代码来保存你的数据,将定时器时间设置为10000。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-25
        • 1970-01-01
        • 2020-12-11
        • 2013-04-04
        • 1970-01-01
        • 1970-01-01
        • 2012-12-03
        • 2021-12-21
        相关资源
        最近更新 更多