What I have?

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

What do I want?

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

What problem am I facing?

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

我在按钮点击事件中使用以下代码:

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();
}

我是不是做错什么了?

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

推荐答案

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

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

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

然后在javascript中我有这个函数.

function setFormSubmitToFalse() {
    setTimeout(function () { _spFormOnSubmitCalled = false; }, 3000);
    return true;
}

我发现3秒钟的暂停是必要的,因为否则我是在sharepoint设置变量之前设置的.这样,我让sharepoint正常设置,然后立即将其设置回false.

Asp.net相关问答推荐

IISExpress未在ARM64 Mac/.NET 4.8上启动

try 在 .net 中使用 MS Graph 添加新的应用程序角色时出现 ODataError

从 asp.net 中的 Web.config 获取连接字符串

*不*使用 asp.net 会员提供程序是个坏主意吗?

返回 JSON 对象 (ASP.NET WebAPI)

在控制器 asp.net mvc 5 的视图上显示错误消息

从 GUID 中删除破折号是个好主意吗?

IIS 6.0 通配符映射基准?

AddDefaultTokenProviders:它是什么以及如何使用那些默认提供者?

带有 ASP.NET MVC 6 锚标记助手的 QueryString

ASP.Net:在共享/静态函数中使用 System.Web.UI.Control.ResolveUrl()

在 asp.net 中调整图像大小而不会丢失图像质量

尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19

解析器错误:无法创建类型

缩小 ASP.Net MVC 应用程序的 HTML 输出

Fiddler 没有从 ASP.NET 网站嗅探 SOAP 流量

协调 ASP.NET 脚本包和源映射

ASP.NET MVC 和 httpRuntime executionTimeout

ASP.net 网站中的 C# 密码文本框

Request.UserHostAddress 和 Request.ServerVariables["REMOTE_ADDR"].ToString() 有什么区别