0

我有一个主页/主菜单页面。表格有链接。如果您使用输入运行表单,您将获得 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 之前回帖,我会得到主菜单(不想要)或表单页面(想要)。我每次都想要表单页面。基本上我想告诉浏览器“我知道这并不是一个真正不同的页面,但请那样对待它,好吗?”

4

1 回答 1

1

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

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

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

注意:如果您喜欢,您也可以重定向到同一页面,但这需要您跟踪它。

于 2012-08-24T13:21:27.223 回答