[英]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.