【问题标题】:LinkButton not doing postback on second clickLinkBut​​ton 在第二次点击时不做回发
【发布时间】:2010-12-28 20:15:29
【问题描述】:

我希望客户能够下载 PDF 文件。所以我在 LinkBut​​ton 上加上了代码:

标记:

<asp:LinkButton ID="lnkPrintHere" runat="server" OnClick="lnkPrintHere_Click" Text="Click here" />

后面的代码:

protected void lnkPrintHere_Click(object sender, EventArgs e)
{
    Response.ContentType = "application/pdf";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
    Response.TransmitFile("/_layouts/Files/" + fileName);
    Response.End();
}

第一次点击链接时一切正常。随后的点击不会引发OnClick 事件。有谁知道为什么会发生这种情况?

PS:如果您需要更多信息,请随时询问。

【问题讨论】:

    标签: c# asp.net postback linkbutton


    【解决方案1】:

    如果您使用Response.End(),就会发生这种情况

    这里提到了: Post Back does not work after writing files to response in ASP.NET

    一种解决方法是使用查询字符串方法。当您单击链接按钮时,使用查询字符串重定向到同一页面。在页面加载中,如果您检测到查询字符串,则发出 PDF 并返回。

    【讨论】:

    • 奇怪的是,我已经尝试在没有 Response.End() 的情况下运行相同的代码,但没有成功。我不太热衷于在这个特定的解决方案上使用查询字符串,但如果没有其他方法,我会试一试。
    • 当你说没有工作时,你的意思是你看到了同样的问题?您可以查看相同的线程以获取替代方案,但根据我的个人经验,没有干净的出路。
    • 是的,我的意思是同样的问题。我会看看你说的其他选择。谢谢!
    【解决方案2】:

    您始终可以在响应方法本身中尝试替代方案,我将您的代码与 Response.Close 一起使用,并且工作正常。但我知道,这不是正确的选择,但使用查询字符串下载也不是正确的选择。

    【讨论】:

    • 为什么使用查询字符串下载不是正确的选择?这几乎正​​是 GET 动词的用途,特别是因为他给出的示例是幂等的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多