私は画像をダウンロードするためにclickイベントを呼び出すボタンを持っています。クリックイベントでは、保存ダイアログが表示されるので、私のディスプレイを変更するコードがあります。私が抱えている問題は、ダイアログが表示されたときに前の行のコードが実行されなくなることです。関数を呼び出す前に自分のコードが実行されていることを確認するにはどうすればよいですか?ここでResponse.WriteFile前のリクエストを停止します
は私のボタンのイベントハンドラと機能である:
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);
}
}
唯一の 'response.write'は、「保存に失敗しました」ということです。もう少しあなたの質問を説明できますか? –
@rockinthesixstring私は質問の曖昧さをお詫び申し上げます。私の質問のタイトルはResponse.WriteFileだったはずです。 clickイベントでは、関数の前のすべてのコードがSaveSnapShot()を呼び出します。実行されません。 Response.WriteFileがそのコードの処理を停止しているようです。関数呼び出しをコメントアウトすると、clickイベント内のすべてのコードが実行されます。 – BDonald
とResponse.End()にはCompleteRequest()と同じ問題がありますか? – hova