0

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

2 回答 2

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"];
    }
}
于 2014-02-13T18:32:38.903 回答
0

好的,我知道这个问题的根源,但我从未找到解决方案。这甚至出现的原因是因为 DotNetNuke 中的设置。如果您查看 Performance Settings,则在 Advanced Settings 选项卡中的 Host Settings 下,有一个名为Page State Persistence的设置。如果您像我一样将其设置为内存,则会导致 AJAX 问题。甚至在描述中也提到了这一点。将其设置回 Page 会使问题消失。

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

于 2014-02-14T15:22:43.813 回答