因为项目需要,使用了模态窗口,故在BasePage中的override void OnInit(EventArgs e)中加入如下内容.

            Response.Clear();
            Response.Buffer = true;
            Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
            Response.Expires = 0;
            Response.CacheControl = "no-cache";
            string nocache = "<meta http-equiv=\"pragma\" content=\"no-cache\">\n";
            nocache += "<meta http-equiv=\"cache-control\" content=\"no-cache, must-revalidate\">\n";
            nocache += "<meta http-equiv=\"expires\" content=\"WED, 26 Feb 1997 08:21:57 GMT\">\n";
            Response.Write(nocache);

可因为一个需求,需要在模态窗口中添加附件的下载功能,因为对附件个数的不确定,所以刚开始的解决方法是直接将附件路径写在<a href></a>里,单击直接下载,使用过程中遇到了问题,譬如,当文件是图片或者是TXT文件是,IE浏览器是直接在线打开的.而我要求是点击后提示是否保存或者打开(注:模态窗口禁用了右键,所以没有另存为).
      怎样才能让IE出现提示呢?我就想到了Response.WriteFile(),但是,因为我的是模态窗口,我去掉了页面缓存.这样就没办法实现了.废话不多说了,最后我的解决方法是利用页面传值方式(简单吧,就怕没想到),将文件路径和文件名传到另一个页面,然后用Request.QueryString获取值.
下面代码分别是附件页面和下载页面.

string slink ="<div><TABLE  border=0><TR><TD&nbsp附件名称</TD><TD>&nbsp附件说明</TD></TR>";
for(int j =0;j<dt.Rows.Count;j++)
            {
                string strpath = Server.UrlEncode(GlobalVar.UploadPath+ "/" +dt.Rows[j]["Filename"].ToString());
                string strfilename = Server.UrlEncode(dt.Rows[j]["Filename"].ToString());
                string strUrl = "FileDownLoad.aspx?pathname="+strpath + "&filename="+ strfilename;
                slink += "<TR><TD><a href=\""+ strUrl +"\" target=\"_blank\")>"+ dt.Rows[j]["Filename"].ToString() +"</a>&nbsp&nbsp&nbsp&nbsp</TD><TD>"+dt.Rows[j]["Explain"].ToString()+"</TD></TR>";
            }

其中的dt 是附件表,GlobalVar.UploadPath是附件地址,Server.UrlEncode是为了中文附件名的传值.
FileDownLoad.aspx的.cs文件如下(FileDownLoad没有用BasePage的)

private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此处放置用户代码以初始化页面
            string sfilePath = Request.QueryString["pathname"];
            string sfilename = Request.QueryString["filename"];
            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(sfilename, System.Text.Encoding.UTF8)); 
            Response.WriteFile(sfilePath); 
            Response.Flush();
            Response.Close();
            Response.End();
        }

转载于:https://www.cnblogs.com/zjy/archive/2006/10/16/529966.html

用页传值方式解决模态窗口的Response.WriteFile文件下载相关推荐

  1. Selenium firefox浏览器修改为标签页打开方式的各种坑

    需求: 今天有位朋友遇到一个梗,selenium使用firefox打开多个网页时,firefox总是以新窗口的方式打开:而这位朋友的需求是以标签页的方式打开新页面. 1.新窗口方式: 2.新标签页方式 ...

  2. JBox - 模态窗口,工具提示和消息 jQuery 插件

    jBox 是一个强大而灵活的 jQuery 插件,可以帮助实现模态窗口,工具提示,通知和更多的功能.你可以使用 jQuery 选择器轻松地添加工具提示效果到元素上,您可以以同样的方式设置模态窗口.该库 ...

  3. Jsp传值方式(乱码问题的解决)

    一,Jsp页面的三种传值方式 1,地址栏传值(get提交) 2,a标签传值 (get提交) 3,表单提交 (默认get方式提交) Get/post取中文都会乱码. Jsp的内置对象request取值. ...

  4. bootstrap 模态窗口 第二次无法加载js 的解决办法

    背景 在使用模态窗口的时打开第一次是没有问题的 ,一切正常,在打开第二次的时候,没法加载相应的js 原因 bootstrap 使用模态窗口时候使用 $("#McustomerAdd" ...

  5. 关于模态窗口(showModalDialog)的专题【收藏】

    关于模态窗口(showModalDialog)的专题[收藏] 转自:http://www.cnblogs.com/donnet/articles/1039509.html 1.模态窗口的打开,mode ...

  6. 来个模态kuang_关于模态窗口(showModalDialog)的专题【收藏】

    转自:http://www.cnblogs.com/donnet/articles/1039509.html 1.模态窗口的打开,model window open 2.模态窗口的关闭,model w ...

  7. asp.net模态窗口返回值

    个人感觉模态窗口在做网站的时候,使用到的比较少,前段时间在做项目时要实现以模态窗口传值和接收返回值, 模态窗口传值实现比较简单,但是做好后发现在Chrome浏览器中接收不到返回值,修改好Chrome浏 ...

  8. eazyui ajax传值,jquery easyui ajax data属性传值方式

    $.ajax({ url:url, type:'post', data:data, dataType:'json', contentType: "application/x-www-form ...

  9. java 非模态_Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/GoForwardToStep/arti ...

最新文章

  1. iOS9中如何在日历App中创建一个任意时间之前开始的提醒(一)
  2. photoshop中把图片颜色变成透明
  3. yolov3深度解析
  4. 【数字信号处理】线性常系数差分方程 ( 卷积 与 “ 线性常系数差分方程 “ | 使用 matlab 求解 “ 线性常系数差分方程 “ )
  5. golang匿名组合
  6. echart 数据视图_关于数据可视化图表的制作,你需要关注的30个小技巧
  7. 1至m为PQ节点,m+1至n-1为PV节点,n为平衡节点
  8. mysql 浮点类型和定点_mysql 中的浮点和定点类型
  9. vscode remote免密登录
  10. 动词ing基本用法_哪些动词后面只能接动名词背诵口诀
  11. 13. PHP 数组
  12. tcp 重发 应用层重传
  13. OpenWrt常用命令总结
  14. 拉普拉斯变换的本质意义
  15. 人工智能贬为人工智障,揭下“伪装”的智能产品
  16. Epicor开发实例
  17. could not establish connection to “hostname”
  18. Windows系统申请苹果证书
  19. 什么是Android SDK
  20. vue的:href和href

热门文章

  1. 【缅怀妈妈系列诗歌】之十:妈妈,孩儿答应您
  2. 脚本调用后台代码 asp.net ajax
  3. 聚焦3D地形编程第五章GeomipMapping for the CLOD
  4. 关于渗透的一些思路持续更新(自我理解)
  5. Linux--内存结构
  6. php对提交数据的验证
  7. 在水晶报表中实现任意选择指定字段显示-模板及C#升级版
  8. hdu2722 简单最短路,处理好输入就行
  9. C语言经典例27-利用递归逆序输出字符串
  10. 【错误记录】Android Studio 编译报错 ( Deprecated Gradle features were used in this build, making it incompat )