2010-12-28 9 views
1

Ich möchte die Clients in der Lage sein, eine PDF-Datei herunterladen. Also habe ich auf einem Linkbutton mit dem Code setzen:LinkButton nicht Postback auf den zweiten Klick

Markup:

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

-Code hinter:

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(); 
} 

Alles funktioniert das ersten Mal, wenn der Link angeklickt wird. Nachfolgende Klicks führen nicht zum Ereignis . Hat jemand eine Idee, warum das passieren könnte?

PS: Sollten Sie weitere Informationen benötigen, zögern Sie nicht zu fragen. Diese

Antwort

0

passiert, wenn Sie Response.End()

verwenden Dies wird hier erwähnt: Post Back does not work after writing files to response in ASP.NET

Eine Abhilfe ist, eine Abfrage-String-Ansatz zu verwenden. Wenn Sie auf Link klicken, werden Sie auf die gleiche Seite mit der Abfragezeichenfolge umgeleitet. Und wenn Sie beim Laden der Seite eine Abfragezeichenfolge erkennen, geben Sie die PDF-Datei aus und geben Sie sie zurück.

+0

Seltsamerweise hatte ich bereits versucht, den gleichen Code ohne die Response.End() zu laufen, und es hat nicht funktioniert. Ich bin nicht sehr daran interessiert, Abfragezeichenfolgen für diese spezielle Lösung zu verwenden, aber sollte nichts anderes funktionieren, werde ich es versuchen. –

+0

Wenn Sie sagen, hat nicht funktioniert, Sie meinen, Sie sahen das gleiche Problem? Sie können den gleichen Thread für Alternativen auschecken, aber aus meiner persönlichen Erfahrung gibt es keinen sauberen Ausweg. –

+0

Ja, ich meinte das gleiche Problem. Ich werde mir andere Möglichkeiten ansehen, wie Sie gesagt haben. Vielen Dank! –

0

Sie können immer Alternativen in der Antwort-Methode selbst versuchen, habe ich Ihren Code mit Response.Close und es funktioniert gut. Aber ich weiß, das ist nicht die richtige Option, aber die Verwendung der Abfragezeichenfolge für den Download ist auch keine richtige Option.

+1

Warum ist die Verwendung einer Abfragezeichenfolge für Downloads nicht die richtige Option? Das ist ziemlich genau das, wofür das GET-Verb steht, zumal das Beispiel, das er gab, idempotent ist. –