这是我过去遇到的一个问题,但我忘记了是否曾经解决过这个问题。我有它,所以当用户点击asp:linkbutton时,它会触发文件的下载。文件下载成功没有问题。但是,如果用户再次单击下载或单击按钮,则会在下载后发生回发并刷新页面,从而清除表格或文本等所有内容。我该如何防止这种情况发生?
这是执行下载的代码。
string name = Path.GetFileName(filePath);
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=\"" + name + "\"");
Response.ContentType = mimeType;
Response.BinaryWrite(file);
Response.End();
注意:
答案 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中修复。