C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ファイルダウンロード(AjaxControlとマスタページ画


(過去ログ 92 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■55038 / inTopicNo.1)  ファイルダウンロード(AjaxControlとマスタページ画
  
□投稿者/ まっさ (9回)-(2010/11/15(Mon) 17:06:53)

分類:[ASP.NET (C#)] 

ファイルのダウンロードをさせたいのですが悩んでいます。

AjaxControlToolkitコントロールが無い場合は
こんな感じでうまくいきました。

Response.AddHeader("Content-Disposition","attachment;filename=ailight.csv");
Response.ContentType = "application/octet-stream";
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("Shift-JIS");
Response.BinaryWrite(encoding.GetBytes("123,123\r\n"));
Response.End();

しかしAjaxControlToolkitコントロールを配置した画面(マスターページも使っています)だと
以下のようなエラーです。


Microsoft JScript 実行時エラー: Sys.WebForms.PageRequestManagerParserErrorException: サーバーから受け取ったメッセージを解析できませんでした。このエラーのよくある原因としては、Response.Write() への呼び出しで応答が変更されるときに、応答フィルタ、HTTP モジュール、またはサーバー トレースが有効になっていることが挙げられます。

Ajaxを使った画面でのダウンロードはどうすればよいのでしょうか?

引用返信 編集キー/
■55050 / inTopicNo.2)  Re[1]: ファイルダウンロード(AjaxControlとマスタページ画
□投稿者/ もりお (302回)-(2010/11/16(Tue) 02:07:02)
2010/11/16(Tue) 02:08:58 編集(投稿者)
No55038 (まっさ さん) に返信

> Ajaxを使った画面でのダウンロードはどうすればよいのでしょうか?

AJAX Control Toolkit もマスターページも使用しない、ダウンロード専用の
ページを作成し、Page.Load イベントのハンドラーにダウンロードのコードを記述する。

そして、AJAX Control Toolkit を使用するページに、ダウンロード専用ページへの
リンクを作成する。

と、そんな作戦でいかがでしょうか。

引用返信 編集キー/
■55055 / inTopicNo.3)  Re[1]: ファイルダウンロード(AjaxControlとマスタページ画
□投稿者/ ミラ (18回)-(2010/11/16(Tue) 09:04:58)
私のところでは再現できなかったのですが

最初にResponse.Clear();を入れてみたらどうですか?
引用返信 編集キー/
■55057 / inTopicNo.4)  Re[2]: ファイルダウンロード(AjaxControlとマスタページ画
□投稿者/ もりお (303回)-(2010/11/16(Tue) 09:25:54)
2010/11/16(Tue) 09:31:44 編集(投稿者)
No55050 (もりお さん) に返信

> と、そんな作戦でいかがでしょうか。

全然ダメな作戦でした。失礼しました。
ダウンロードのコードは、ページハンドラー aspx ではなく、
ジェネリックハンドラー ashx で実装するのが常道みたいです。

[download.ashx.cs]

public void ProcessRequest(HttpContext context)
{
  HttpResponse response = context.Response;
  response.AddHeader("Content-Disposition","attachment;filename=ailight.csv");
  response.ContentType = "application/octet-stream";
  response.Write("もりお");
  response.End();
}

[useAJAXControlToolkit.aspx]

<a href="download.ashx">download</a>

引用返信 編集キー/
■55096 / inTopicNo.5)  Re[2]: ファイルダウンロード(AjaxControlとマスタページ画
□投稿者/ まっさ (10回)-(2010/11/16(Tue) 21:06:00)
No55055 (ミラ さん) に返信
> 私のところでは再現できなかったのですが
>
> 最初にResponse.Clear();を入れてみたらどうですか?

ミラさん返信ありがとうございます。
試したのですが、同じエラーでした。

もりお さん返信ありがとうございます。
ジェネリックハンドラを使わなくてもページハンドラー aspxのPage_loadに実装
する方法でうまくいきました。

ありがとうございました!


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -