0

私はRenderこのようにオーバーライドしています:

protected override void Render(HtmlTextWriter writer)
{
    var keyCheck = HttpContext.Current.Session["PaymentSearchResults"];

    if (_exportToExcel && keyCheck != null)
    {
        ExportToExcel();
        return;
    }

    base.Render(writer);
}

メソッド内で次のように応答に追加する Excel ファイルをダウンロードするにはExportToExcel:

File.WriteAllBytes(tempFileName, buffer);

Response.ContentType = "application/ms-excel";
Response.WriteFile(tempFileName);

HttpContext.Current.ApplicationInstance.CompleteRequest();

ただし、応答がブラウザーに返されないため、ブラウザーはハングアップします。

私は何を間違っていますか?

4

1 に答える 1

2

これは、ボタンクリックイベントで使用するものです。魅力のように機能します。

HttpContext httpCtx = System.Web.HttpContext.Current;

httpCtx.Response.Clear();
httpCtx.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
httpCtx.Response.ContentType = "application/vnd.ms-excel";
httpCtx.Response.Charset = "utf-8";

httpCtx.Response.WriteFile(filePath);

httpCtx.Response.End();
于 2012-12-03T18:53:08.517 に答える