将文件写入ASP.NET中的响应后,Post Post不起作用

Vij*_*jay 44 asp.net download

是)我有的?

我有一个ASP.NET页面,允许用户通过a单击按钮下载文件.用户可以从可用文件列表(RadioButtonList)中选择他想要的文件,然后单击下载按钮进行下载.(我不应该为每个可以下载的文件提供链接 - 这是要求).

我想要什么?

我希望用户通过选择所需的单选按钮并单击按钮逐个下载多个文件.

我面临什么问题?

我可以第一次正确下载该文件.但是,下载后,如果我选择其他文件并单击按钮进行下载,则单击该按钮的事件不会回发,并且不会下载第二个文件.

我在按钮单击事件上使用以下代码:

protected void btnDownload_Click(object sender, EventArgs e)
{
    string viewXml = exporter.Export();
    Response.Clear();
    Response.AddHeader("Content-Disposition", "attachment; filename=views.cov");
    Response.AddHeader("Content-Length", viewXml.Length.ToString());
    Response.ContentType = "text/plain";
    Response.Write(viewXml);
    Response.End();
}
Run Code Online (Sandbox Code Playgroud)

我在这里做错了吗?

可以在IE6,IE7和Chrome中复制相同的问题.我认为这个问题与浏览器无关.

Rob*_*bbZ 59

我在sharepoint上遇到了同样的问题.我在页面上有一个发送文件的按钮,单击按钮后,表单的其余部分没有响应.事实证明,这是一个sharepoint的事情,它将变量_spFormOnSubmitCalled设置为true以防止任何进一步的提交.当我们发送文件时,这不会刷新页面,因此我们需要手动将此变量设置为false.

在webpart上的按钮上,将OnClientClick设置为页面的javascript中的函数.

 <asp:Button ID="generateExcel" runat="server" Text="Export Excel" 
OnClick="generateExcel_Click" CssClass="rptSubmitButton"
OnClientClick="javascript:setFormSubmitToFalse()" />
Run Code Online (Sandbox Code Playgroud)

然后在javascript中我有这个功能.

function setFormSubmitToFalse() {
    setTimeout(function () { _spFormOnSubmitCalled = false; }, 3000);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我找到的3秒暂停是必要的,否则我在sharepoint设置之前设置变量.这样我让sharepoint正常设置然后我把它设置回false.