c#page_unload与page_load一起触发

时间:2012-05-09 17:34:54

标签: c# asp.net

所以我想在用户关闭浏览器时删除一些文件。

我正在使用下面显示的page_unload方法:

   protected override void OnUnload(EventArgs e)
    {
        base.OnUnload(e);
        string[] uploadedFiles = Directory.GetFiles(Server.MapPath("~/testPdfIn"));
        foreach (string uploaded in uploadedFiles)
        {
            File.Delete(uploaded);
        }
    }

但是page_unload方法只会在页面加载后立即触发,删除文件夹中的文件而用户甚至不关闭浏览器。

有没有办法阻止page_unload在加载后立即触发,只在用户关闭浏览器时触发?

4 个答案:

答案 0 :(得分:1)

这是它应该如何工作,如果你想在页面卸载中做一些事情。使用 window.onbeforeunload

答案 1 :(得分:1)

最好检测一下浏览器关闭事件,然后使用ajax调用服务器端函数将为你做什么

<script type="text/javascript">
$(function () {
    $(window).unload(function () {

   jQuery.ajax({ url: "http://localhost:49591/filedelete.aspx", async: false });
      });
});
</script>

答案 2 :(得分:0)

Page_Unload与浏览器关闭无关。一旦完全加载了所有页面元素/页面,就会发生卸载事件。

您应该考虑将文件删除代码放在global.asax文件中的session_end

答案 3 :(得分:0)

Page.Unload无法正常工作。 在Page.Unload life-cycle结束时触发了Page,而不是在浏览器关闭时:

  

完全呈现页面后引发Unload事件,   发送给客户端,准备丢弃。此时,页面   卸载响应和请求等属性并进行清理   进行。

代码隐藏方法是服务器端,而关闭的浏览器是客户端事件。