Ich habe eine Schaltfläche, die ein Click-Ereignis aufruft, um ein Bild herunterzuladen. In meinem Klick-Ereignis habe ich etwas Code, um meine Anzeige zu ändern, wenn der Speichern-Dialog erscheint. Das Problem, das ich habe, ist, dass wenn der Dialog auftaucht, die Ausführung der vorherigen Codezeile gestoppt wird. Wie kann ich überprüfen, ob mein Code vor dem Aufruf der Funktion ausgeführt wurde?Response.WriteFile Beenden der vorherigen Anfrage
Hier ist meine Schaltfläche Ereignishandler und Funktion:
protected void btnSave_Click(object sender, EventArgs e)
{
var _title = txtTitle.Text;
txtTitle.Text = string.Empty;
txtDescription.Text = string.Empty;
ChangeDisplay();
if (Request.Browser.Browser == "IE")
lblSnapShot.Visible = (lblSnapShot.Visible) ? false : true;
SaveSnapShot(_title);
}
void SaveSnapShot(string _title)
{
try
{
FileInfo _fileToDownload = new FileInfo(_path);
Response.Clear();
Response.ContentType = "image/png";
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + _title + ".png\"");
Response.WriteFile(_fileToDownload.FullName);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
catch (System.Exception ex)
{
ChangeDisplay();
if (Request.Browser.Browser == "IE")
lblSnapShot.Visible = (lblSnapShot.Visible) ? false : true;
Response.Write("SAVE FAILED \n Error: " + ex.Message);
}
}
das einzige "response.write" ich sehe ist, wenn die "Speichern fehlgeschlagen". Kannst du deine Frage etwas mehr erklären? –
@rockinthesixstring Ich entschuldige mich für die Unbestimmtheit der Frage. Der Titel meiner Frage sollte Response.WriteFile sein. Im Click-Ereignis der gesamte Code vor dem Funktionsaufruf SaveSnapShot(); wird nicht ausgeführt. Es scheint, dass die Antwort.WriteFile die Verarbeitung dieses Codes beendet. Wenn ich den Funktionsaufruf auskommentiere, wird der gesamte Code im click-Ereignis ausgeführt. – BDonald
und Response.End() hat das gleiche Problem wie CompleteRequest()? – hova