これは長いタイトルです。これが私が行っていることです。レポートパラメーターがURLに表示されないようにするために、コードビハインドのボタンクリックハンドラーでこれを実行して、レポートを表示します。
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Write("<html><head></head>");
System.Web.HttpContext.Current.Response.Write("<body onload=\"document.mainform.submit(); \">");
System.Web.HttpContext.Current.Response.Write(string.Format(CultureInfo.InvariantCulture, "<form name=\"mainform\" method=\"post\" action=\"{0}\">", ReportURL));
foreach (string key in Params.Keys)
{
System.Web.HttpContext.Current.Response.Write(string.Format(CultureInfo.InvariantCulture, "<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", key, Params[key]));
}
System.Web.HttpContext.Current.Response.Write("</form>");
System.Web.HttpContext.Current.Response.Write("</body></html>");
これはうまく機能しますが、レポートから戻ると、生成したばかりのページに移動します。このページは、onloadイベントのためにフォームをすぐに送信します。私はそれを通り越すために本当に素早く2回反撃することができますが、これは理想的ではありません。
HTMLを作成する前にClientScript.RegisterStartupScriptを使用してJavaScriptで新しいウィンドウを開こうとしましたが、新しいウィンドウのHttpContextを取得する方法(または可能かどうか)がわかりません。