我有一个按钮,可以调用点击事件来下载图片。在我的点击事件中,我有一些代码可以在弹出“保存”对话框时更改我的显示。我遇到的问题是,当对话框出现时,它会停止执行上一行代码。在调用函数之前,如何检查我的代码是否已执行?
这是我的按钮事件处理程序和函数:
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);
}
}
答案 0 :(得分:2)
Response.WriteFile不会停止处理其他代码(在你调用WriteFile之前代码就是这样,怎么可能呢?)
但是,您的SaveSnapshot方法正在向浏览器发送图像,而不是通常的HTML响应。对于浏览器的每个请求,您只能发送一个响应 - 您无法同时发回图像文件和更新HTML。