ホーム/メインメニューページがあります。フォームへのリンクがあります。入力を使用してフォームを実行すると、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 を生成する前に投稿するかどうかに応じて、メイン メニュー (望まない) またはフォーム ページ (望む) を取得します。毎回フォームページが欲しい。基本的には、ブラウザに「実際には別のページではないことはわかっていますが、そのように扱っていただけますか?」と伝えたいのです。