none
因为要下载xls文件所以写了response.redirect之后页面不会刷新,如何让redirect之后页面刷新呢 ? RRS feed

  • 问题

  • 如题:
    response.redirect之后页面还是原先的页面只是弹出一个框保存excel的文件,但是之后页面却不会刷新了,我想让页面刷新以便render出同时计算的gridview的显示,怎么做呀?
    2009年5月27日 3:36

答案

  • 你好,可以使用下面的代码来避免跳转
    protected void btnDown_Click(object sender, EventArgs e)
    {
        // 1 弹出对话框提示下载文件(不会开新窗口)
        // 2 隐藏路径
        string fPath = Path.Combine(Server.MapPath("Images"), "Winter.jpg");
        FileStream fFileStream = new FileStream(fPath, FileMode.Open);
        long fFileSize = fFileStream.Length;
        Context.Response.ContentType = "application/octet-stream";
        Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
        Context.Response.AddHeader("Content-Length", fFileSize.ToString());
        byte[] fFileBuffer = new byte[fFileSize];
        fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
        fFileStream.Close();
        Context.Response.BinaryWrite(fFileBuffer);
        Context.Response.End();
    }



    知识改变命运,奋斗成就人生!
    2009年5月27日 14:31
    版主

全部回复

  • 你那就不能使用 redirect了,这个是将页面重定向了。
    你可以使用弹出的页面
    window.open()
    【孟子E章】
    2009年5月27日 4:42
    版主
  • 用过,弹出页面也有问题,弹出后一下就关掉了,您知道啥问题吗?

    2009年5月27日 4:43
  • 我是直接window.open(1.xls)这样写的,在我本机可以,放到测试服务器上,打开后一下就关掉了。
    2009年5月27日 4:44
  • 一下就关掉了是客户端的设置问题,不是每一个机器都这样的。
    你还可以使用
    window.open("d.aspx?f=1.xls")
    在d.aspx里使用你那个redirect
    【孟子E章】
    2009年5月27日 4:51
    版主
  • 客户端怎么设置啊?这个太难说清楚了,我本机就行,服务器上打开新页面后页面自动关掉,昨天,我在家试也有这个问题,一下就关了,我不清楚怎么回事,头发白了。。。
    2009年5月27日 5:28
  • protected void Page_Load(object sender, EventArgs e)
          {
             Page.ClientScript.RegisterStartupScript(this.GetType(), "openFile", @"<script language='javascript'>window.open('1.xsl');</script>");
    ///其他的代码

    }
    努力着就不会放弃!http://hi.baidu.com/1987raymond
    2009年5月27日 5:44
    版主
  • 你好,可以使用下面的代码来避免跳转
    protected void btnDown_Click(object sender, EventArgs e)
    {
        // 1 弹出对话框提示下载文件(不会开新窗口)
        // 2 隐藏路径
        string fPath = Path.Combine(Server.MapPath("Images"), "Winter.jpg");
        FileStream fFileStream = new FileStream(fPath, FileMode.Open);
        long fFileSize = fFileStream.Length;
        Context.Response.ContentType = "application/octet-stream";
        Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
        Context.Response.AddHeader("Content-Length", fFileSize.ToString());
        byte[] fFileBuffer = new byte[fFileSize];
        fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
        fFileStream.Close();
        Context.Response.BinaryWrite(fFileBuffer);
        Context.Response.End();
    }



    知识改变命运,奋斗成就人生!
    2009年5月27日 14:31
    版主
  • 楼上的多谢,我也试过了好像效果和直接redirect到1.xls是一样的。
    2009年5月28日 1:35
  • 不一样哟!不会跳转页面当然就不存在你下载页刷新的问题咯,对了,你指的计算是指计算下载次数吗?
    知识改变命运,奋斗成就人生!
    2009年5月28日 1:39
    版主
  • 另外  你redirect 可以在后加一个随即参数保证你的客户端cache 不能工作

    response.redirect  (url + "#" + Datetime.Now.tostring())
    紫柔版主的头像真叫萌得一个不行啊。。。。
    2009年5月28日 2:36