【问题标题】:Postback Happening after Download when Clicking a Button or Link单击按钮或链接时下载后发生回发
【发布时间】:2014-02-13 17:42:35
【问题描述】:

这是我过去遇到的一个问题,但我忘记了我是否解决了它。我有它,所以当用户单击 asp:linkbutton 时,它会触发文件下载。文件下载成功没有问题。但是,在下载后,如果用户再次单击下载或单击按钮,则会发生回发并且页面会刷新,从而清除表格或文本等所有内容。如何防止这种情况发生?

这是下载执行的代码。

string name = Path.GetFileName(filePath);
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=\"" + name + "\"");
Response.ContentType = mimeType;
Response.BinaryWrite(file);
Response.End();

注意事项:

  • 链接按钮控件不是在代码中在幕后创建的,如果这会有所不同的话。
  • 第二次点击链接时,文件没有下载。只会发生刷新。
  • 这是 DNN 模块的一部分

【问题讨论】:

    标签: c# asp.net download asplinkbutton


    【解决方案1】:

    首先,您需要保存要在回发之前保留的信息。可以做到这一点的方法之一是使用 session.例如,如果您想保存文本框的值,您可以说:

    Session["TextBox1"] = TextBox1.Text;
    

    然后您需要在页面加载功能中处理回帖。

    private void Page_Load()
    {
       //check if this is a post back
       if(this.IsPostBack)
        {
           //restore your values
           TextBox1.Text = (string)Session["TextBox1"];
        }
    }
    

    【讨论】:

    • 我还需要将表格保存在 gridview 中,但我对这种方法的问题是它不能解决第二次点击。再次点击下载链接,页面只刷新,没有下载。
    【解决方案2】:

    好的,我知道这个问题的根源,但我一直没有找到解决办法。这甚至出现的原因是因为 DotNetNuke 中的设置。如果您查看性能设置,则在“高级设置”选项卡的“主机设置”下,有一个名为页面状态持久性的设置。如果您像我一样将其设置为内存,则会导致 AJAX 问题。它甚至在描述中被指出。将其设置回 Page 会使问题消失。

    我将其保留为内存的原因是因为我公司的网站正在使用内存,但我不知道它已切换回页面。现在这不是问题,但如果有人找到设置为内存时的解决方案,请告诉我!否则,我建议不要使用它,除非它已在较新版本的 DNN 中得到修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多