我正在打开一些面板,其中包含这样的代码
<td rowspan="2">
<br />
<asp:UpdatePanel ID="updatePnl" runat="server">
<ContentTemplate>
<asp:LinkButton ID="lnkYurLevel" runat="server" ForeColor="#009999" Text="What are my next steps?"
Font-Size="Medium" OnClick="lnkYurLevel_Click"></asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
</td>
protected void lnkYurLevel_Click(object sender, EventArgs e)
{
if (lblFileName.Text != "")
{
string path = Server.MapPath(@"~\downloads\" + lblFileName.Text);
System.IO.FileInfo file = new System.IO.FileInfo(path);
if (file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(file.FullName);
Response.End();
}
else
{
Response.Write("This file does not exist.");
}
}
}
然后单击按钮,我正在打开一个要下载的文件,但该下载不会出现,因为它在未保存在要通过模型弹出窗口打开的面板中时正在工作。 现在,当它被放置在要通过模型弹出窗口打开的面板中时。它不起作用。 原因是什么?
最佳答案
UpdatePanel
内的操作不会更改整个 Response
,而只会更改页面的一部分。所以你不能指望 Response.Write 能够工作。另一种方法是让按钮强制执行完整的PostBack
将
PostBackTrigger
添加到 asp:Button
,如下所示
<Triggers>
<asp:PostBackTrigger ControlID="lnkYurLevel" />
</Triggers>
或者如果您想在代码隐藏中执行此操作,请执行此操作。
ScriptManager.GetCurrent(Page).RegisterPostBackControl(lnkYurLevel);
关于asp.net - 为什么下载的文件无法保留在模型弹出窗口中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10784465/