注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

Asp.Net顶用iframe解决模态窗口文件下载题目(转)  

2012-09-28 09:59:15|  分类: asp.net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

比来在项目中经常用到模态窗口(showModalDialog),客户须要在一个模态窗口中有"生成Excel报表"并"导出"的功能。接到任务后,直接就开端按常规操纵实现。
    在按钮的Click事务中,按照模板生成Excel报表,填充数据,保存惠姑且文件夹,然后用Response.WriteFile函数输出文件,一切看上去都很顺利。代码如下:


            //按照.net数据集创建Excel报表并返回Excel报表路径
            string fileName = CreateExcel(ds);
            Response.Clear();
            Response.Charset = "utf-8";
            Response.Buffer = true;
            this.EnableViewState = false;
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            //设置输出文件类型为excel文件。
            Response.ContentType = "application/ms-excel";
            Response.WriteFile(fileName);
            Response.Flush();
            Response.Close();
            Response.End();


    然则当完成了代码,开端测试的时辰,却发明点击"导出"按钮没有反响。开端的时辰认为是创建Excel报表的代码有题目,但经过调试后,证实创建 Excel代码没有题目,也成功的在姑且文件夹下生成了Excel报表,然则却没有"导出"报表(没弹出下载文件对话框)。再看输出文件的代码,应当也没 有题目,之前一向如许输出都没有题目的。
    在百思不得其解的时辰,发了然一个关键点。就是之前输出文件成功的面页都是一般的网页窗口,而此次的操纵倒是在模态窗口中。题目会不会出在这里呢?赶紧实验了一下。把模态窗口改成了一般的网页窗口,果真可以输出文件没题目,也成功下载了报表。
    固然题目有点怪异,但找到了切入点和题目的关键地点,解决应当就不难了。google一 下,发明模态窗口定义了<base target="_self">,这应当是题目地点。然后在页面中从头定义了这个标签,改成了<base target="_blank">,题目成功解决,文件可以正常下载了。但这时辰又来了新的题目,下载是可以了,然则却会弹出一个新页面,在模态窗 口中下载再弹出页面必然影响了用户体验。有没有办法在模态窗口中直接下载而不弹出新的页面呢?既然target=_self的时辰有题 目,target=_blank的时辰又会弹出新的页面,这让我想到了在框架中打开新窗口的做法。在页面中加一个看不到的框架,然后把target设为框 架名应当可以解决。随后在页面中再加了一个大小为0的iframe


<iframe id="download" name="download" height="0px" width="0px"></iframe><!--用.net的iframe模仿文件下载-->
然后从头批改<base>标签target为框架名:


<base target="download">

  评论这张
 
阅读(635)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017