繁体   English   中英

返回页面无法在BinaryWrite上正常工作

[英]Page back not working as expected on BinaryWrite

我有一个主菜单页面。 有一个到表格的链接。 如果使用输入运行表单,则将获得Excel输出。 如果单击“打开”以在浏览器中打开该输出,则后退按钮会将您带到主菜单/主菜单。

这是可以理解的,因为如果表单页面是X.aspx,则输出Excel的binaryWrite并不会真正改变它。

问题是,如果有回发,则“后退”按钮会将您带到表单页面。 这是不一致的。 如果我运行页面或下拉菜单导致回发,我真的希望后退按钮将我带到表单字段,以便我可以再次运行excel工作表。

我尝试过的事情。

我尝试添加位置标头。

e.ContentFileName = "ELTFile.Output.xls";

在回应之前。写作...

private void SendFileToBrowser(DownloadFileEventArgs e)
{
    if (!e.Cancel && e.FileObject != null)
    {
        this.Page.Response.Clear();
        this.Page.Response.ClearContent();
        this.Page.Response.AddHeader("Content-Disposition", string.Format("inline; filename={0}", e.ContentFileName));
        this.Page.Response.AddHeader("Content-Length", e.FileObject.LongLength.ToString());
        this.Page.Response.AddHeader("Location", e.ContentFileName);
        this.Page.Response.ContentType = e.ContentType;
        this.Page.Response.BinaryWrite(e.FileObject);
        this.Page.Response.End();
    }
}

我试过了

Response.Cache.SetCacheability(HttpCacheability.Public);

以及

Response.Cache.SetCacheability(HttpCacheability.Server);

但基本上,根据我是否在单击“提交”按钮以生成Excel之前回发,我会得到主菜单(不需要)或表单页面(想要)。 我每次都需要表单页面。 基本上,我想告诉浏览器“我知道它并不是一个真正的页面,但是以这种方式对待它,可以吗?”

您不能直接将页面添加到浏览器历史记录中。

您可以使您的应用程序使表单始终位于excel输出之前。

为此,请使用单独的页面输出excel。 当您具有生成Excel的输入时, Response.Redirect到生成页面。 这会将您的输入表单保留在浏览器历史记录中。

注意:如果愿意,您也可以重定向到同一页面,但这需要您对其进行跟踪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM