ポストバックを行うページにリンクがあります。
otherOptionsContainer.Controls.Add(new LiteralControl(String.Format("<a href='{0}' onclick='return {1}.exportItems();'>Export</a><br/>", exportURL, this._clientInstanceName)));
および http ハンドラ
byte[] ms_excel = some_params_from_code
MemoryStream ms_excel_tream = new MemoryStream(ms_excel);
context.Response.ContentType = CONTENT_TYPE_MS_EXCEL;
String dateNow=DateTime.Now.ToString("dd-MMM-yyyy_HH_mm", new System.Globalization.CultureInfo("en-US"));
context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=Export_{0}.xls", dateNow));
ms_excel_tream.WriteTo(context.Response.OutputStream);
ms_excel_tream.Close();
some_params_from_code を httpHandler に送信する必要があります。いくつかの制限があります。1. クエリ文字列を使用しない 2. Cookie を使用しない
このようなajaxを使用してデータを送信しようとしていました
$.ajax({
url: "_Layouts/blah/blahHandler.ashx",
contentType: "application/json; charset=utf-8",
data: { 'key1':'value1'},
dataType: "json",
success: OnComplete,
error: OnFail
});
しかし、http ハンドラーは別の応答オブジェクトを書き込みます。または、別のコンテキストがハンドラーに来ます。