asp.net - 为什么下载的文件无法保留在模型弹出窗口中?

标签 asp.net ajaxcontroltoolkit

我正在打开一些面板,其中包含这样的代码

 <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/

相关文章:

asp.net - 标识列增量跳转

c# - 从 yahoo 凭据导入 yahoo 联系人

asp.net - 对于 webkit 浏览器,向下滚动页面后,AutoCompleteExtender 的位置错误

asp.net - 使用UpdatePanel和ToolkitScriptManager时会引发两次AjaxControlToolkit TabContainer ActiveTabChanged事件吗?

ASP.net 用户数据在访问对象的用户之间交叉

asp.net - WCF 服务调用返回空文件/页面

asp.net - 如何在部分回发期间检查客户端脚本是否已注册

visual-studio-2010 - 如何防止 MaskedEdit 扩展程序破坏 CodedUITests? ( Visual Studio 2010)

javascript - 根据内部宽度显示脚本 - 不带 "potentially dangerous request.form"

asp.net - 更新进度动画 gif 在回发时停止