Updatepanel下文件导出问题
今天遇到很头疼的问题,浪费了几个小时,搞得我都快怀疑人生了,特做个记录。
功能:页面上点击一个按钮,实现Excel导出
实现:按钮添加点击事件,事件调用导出方法,输出Excel文件流,如下:
问题:点击按钮,触发事件,调用上面的方法,获取Excel二进制流,对Response进行设置,结果没有任何反应,不会下载,通过抓包请求,看到数据的确输出到前端了,咋回事呢。
好奇怪!!!!
然后各种排查,如:二进制流的排查,Response设置是否正确等,还是不行,有点烦躁呀
真的好奇怪!!!!!
然后继续排查,一如既往的尝试,流的问题、Response设置的问题,各种百度、谷歌,还是不行,有点受不了
奇怪到我怀疑人生!!!
开始找高手,拉过来捋一遍,也没解决,通过url地址直接访问以及其它页面用按钮触发下载都可以成功,就是这个页面点击按钮不行,啊啊啊啊啊啊……崩溃呀!!!!!!!!!!
冷静……,冷静……,冷静………………,肯定哪里有问题,突然想起来,这个按钮被Updatepanel包着,秒懂呀
Updatepanel下面控件,触发动作,属于异步(Ajax)操作,Ajax不支持文件导出,然后各种百度、谷歌,求证,果然是这样子。
问题终于得到解决!
现在主流的js框架,对于附件导出也都是做了特殊处理的,比如使用a标签、拼接Form表单、window.open等。
售楼框架就封装了一个Form表单的实现,在Common.js中有个CustomPost,如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了