单击按钮或链接后下载后发生回发

时间:2014-02-13 17:42:35

标签: c# asp.net download asplinkbutton

这是我过去遇到的一个问题,但我忘记了是否曾经解决过这个问题。我有它,所以当用户点击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模块的一部分

2 个答案:

答案 0 :(得分:1)

首先,您需要在回发之前保存要保留的信息。可以通过使用会话来实现这一点。例如,如果您想保存文本框的值,可以说:

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"];
    }
}

答案 1 :(得分:0)

好的,我知道这个问题的根源,但我从来没有找到解决方案。这甚至出现的原因是因为DotNetNuke中的设置。在“高级设置”选项卡的“主机设置”下,如果查看“性能设置”,则会出现一个名为页面状态持久性的设置。如果你像我一样将它设置为Memory,它将导致AJAX问题。它甚至在说明书中也有提到。将其设置回Page会使问题消失。

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