1

我对 ASP.NET 不是很熟练,我尝试过:

  1. 更新 aspx 网站上的 UI 元素
  2. 同时下载一个文件

我有这个 JS 功能:

function downloadURL(url) {
            var hiddenIFrameID = 'hiddenDownloader',
                iframe = document.getElementById(hiddenIFrameID);
            if (iframe === null) {
                iframe = document.createElement('iframe');
                iframe.id = hiddenIFrameID;
                iframe.style.display = 'none';
                document.body.appendChild(iframe);
            }
            iframe.src = url;
        };

和这个 Button 服务器控件:

<asp:Button runat="server" ID="Button1" Content="DOWNLOAD" OnClick="Button1_Click" />

在 EventHandler 我简单地调用:

// 更新用户界面

textBoxXY.Text = "Text after file download";

ClientScript.RegisterStartupScript(typeof(MyPage), "myDownloadKey", "downloadURL(" + ResolveUrl("~/MyDownloadHandler.ashx") + ");", true);

您如何看待这种方法。它似乎工作,但......

4

1 回答 1

1

它们与MyDownloadHandler.ashx标题有关。如果您在处理程序 ashx 上添加此标头

 HttpContext.Current.Response.ContentType = "application/octet-stream";
 HttpContext.Current.Response.AddHeader("Content-Disposition", 
                    "attachment; filename=" + SaveAsThisFileName);

然后浏览器将打开文件保存浏览器而不是新选项卡。

而你只需要与 javascript 相关的是

window.location = "MyDownloadHandler.ashx";

或者只是一个简单的链接。

总而言之,您创建了很多不必要的代码,并且您进行了回发,这也是不必要的。

相对: 从服务器下载文件的最佳方式是
从 ASP.NET Web 处理程序(.ashx)下载文件时的错误处理

于 2013-08-06T18:44:55.367 回答