我正在开发一个ASP.NET应用程序。目前,当用户点击某个项目上的“保存”时,我们会禁用“保存”按钮,将其文本更改为“正在保存...”,依此类推。这样可以正常工作,因为该按钮会导致回发,从而导致加载新页面,不再禁用“保存”按钮。
我们现在想将此应用于其他操作:发布(与保存没有太大区别),导入(再次,很像保存,但基于用户在上一步中上传的数据),导出(下载XML文件)给用户)等。
导出导致我出现问题 - 按钮保持禁用状态。我认为这是因为服务器发送回一个XML文件而不是新的网页,因此浏览器只显示相同的页面。
服务器端代码与
一致Response.Clear();
Response.BufferOutput = true;
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + whatever);
[push file contents into Response.OutputStream]
Response.End();
[不知道这是不是很好的代码 - 它不是我的 - 但它确实起作用了:)]
基本上,我想知道:
答案 0 :(得分:1)
看起来this应该这样做:实际上,设置一个带有文件响应的cookie,并让浏览器等待该cookie以取消阻止该页面。
答案 1 :(得分:0)
问题可能是您根本没有加载新页面。
由于内容存储是附件,浏览器不会重新加载页面,只会将服务器的返回保存到磁盘。
你需要重新加载一些页面,但我对文件提取后如何做到这一点并不是很好。
答案 2 :(得分:0)
有一个肮脏的黑客。您可以使用setTimeOut方法启用和更改后退按钮标题/图像。
因此,您可以编写类似于
的服务器端代码btn.Attributes.Add(“onclick”,“this.disabled ='true'; this.value ='Processing ...'; _ doPostback(this,null); setTimeout(function(){enable button logic。 ...设置按钮的文本/ img},);“);
服务器端下载附件事件不会完美同步,但您可以将超时设置为2-5秒,具体取决于您的服务器配置。
谢谢!