0

我有一个按钮,它的OnClientClick事件调用 Generate()。

function Generate() {
    window.open('GenerateKey.aspx', '_newtab', 'titlebar = no', false);
    PageMethods.SendKey(SendKeyCallback, SendKeyCallbackError);
}

回调函数隐藏加载 gif 并提醒状态(成功/失败)

GenerateKey.aspx 创建一个文件并打开一个下载弹出窗口。

这是 page_load 代码:

    string keyFileName = orgName + "-" + timeStamp + ".ckey";
    fs = new FileStream(Server.MapPath("~/License/Generate/" + keyFileName), FileMode.Create, FileAccess.ReadWrite);
    sw = new StreamWriter(fs);
    sw.Write(generatedKey);
    sw.Flush();
    fs.Close();
    Response.ContentType = "text/xml";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + keyFileName);
    Response.TransmitFile(Server.MapPath("~/License/Generate/" + keyFileName));
    Response.End();

代码工作正常,但我的问题是新选项卡在下载弹出到屏幕后关闭(我猜它是因为 Response 对象而发生的),它看起来像一个错误。

我弹出一个新的空白选项卡 1 秒钟,然后它关闭了。

有人知道如何使它看起来更好吗?我不能在同一页面上执行此操作,因为在文件生成之后,我不再与客户端建立连接(这就是我使用 window.open 的原因)。

4

1 回答 1

0

您要求浏览器在另一个窗口中打开一个文本文件。浏览器可能会将数据解释为不是 HTML,将文件存储到磁盘,然后关闭窗口——这对于浏览器来说是相当标准的。如果这不是您想要的,您需要将 HTML 数据发送到浏览器或将您的浏览器配置为不自动将该类型的数据保存到磁盘。

于 2012-07-26T16:42:15.227 回答