- PR -

ModalダイアログからのResponse.BinaryWrite

1
投稿者投稿内容
最大40
常連さん
会議室デビュー日: 2004/02/06
投稿数: 41
投稿日時: 2005-10-21 18:56
ASP.NET + C# にて、サーバからExcelファイルをクライアントにダウンロードさせる処理を実装しようとしています。
この処理を通常のブラウザウィンドウ上から行うと正常にダウンロードできるのですが、
JavaScriptのShowModalで表示した画面から行うと、ダウンロードのダイアログが出てこず、うまくいきません。
ダウンロードする部分のコードは以下のようにしています

コード:

// Webサーバからファイルをダウンロードし起動する(ダイアログが表示される)
Response.ContentType = "Application/Octet-Stream-Dummy";
string encodeFileNm = HttpUtility.UrlEncode(lfinf.ListFileNm);
Response.AddHeader("content-disposition","attachment; filename=" + encodeFileNm);
Response.BinaryWrite(lfinf.FileData);
Response.End();



モーダルダイアログからダウンロードすることは出来ないのでしょうか。
モーダルからダウンロードする方法がありましたら教えていただけると助かります。

以上、よろしくお願いします


[ メッセージ編集済み 編集者: 最大40 編集日時 2005-10-21 18:58 ]
まみ
会議室デビュー日: 2005/05/04
投稿数: 3
投稿日時: 2007-10-30 17:51
最大40さんと全く同じ現象で悩んでいます。
解決方法わかる方、教えてください。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-31 08:18
当方のIE6では、モーダルのPage_Loadでダウンロードさせる方法ではダイアログが出てきませんが
モーダル上でボタンを押してダウンロードさせる方法ならダイアログがでてきます。

#個人的にはShowModalDialogは不思議な動きをしたりするので使わない方がいいと思います。
まみ
会議室デビュー日: 2005/05/04
投稿数: 3
投稿日時: 2007-10-31 09:15
べるさん、返信ありがとうございます。

モーダル上でボタンを押してダウンロードさせる方法というのは
具体的にはどんな感じなのですか?

私もIE6ですが、モーダルに出力ボタンを配置して、ボタンがクリックされたら
ダウンロードさせるやり方をしてるのですが、ダイアログは出てきません。

よろしくお願いします


べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-31 10:40
引用:
私もIE6ですが、モーダルに出力ボタンを配置して、ボタンがクリックされたら
ダウンロードさせるやり方をしてるのですが、ダイアログは出てきません。

逆にこれは、具体的にはどんな感じなのですか?
私はボタンクリックイベントに冒頭にあるようなコードを書いているだけです。
そのページをモーダルで開く方法はjavascriptのshowModalDialogでやってます。

ただ、開発環境(つまりローカル)で試してるだけなので、本番でどうかは確認してないです。
まみ
会議室デビュー日: 2005/05/04
投稿数: 3
投稿日時: 2007-10-31 15:58
べるさん、私がやっているのは具体的には以下の通りです。

javascriptのshowModalDialogでモーダルを表示しています。
そこにはテキストボックスや「出力」ボタンが配置されており、
「出力」ボタンが押されたら、ボタンクリックイベントで画面項目をDBに更新をかけて
その後、以下のような記述を書いています。

コード:

Response.Clear();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(filename));
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.BinaryWrite(bytearr);
Response.Flush();
Response.End();



showModalDialogではなく、window.openでやるとダイアログは表示されます。

[ メッセージ編集済み 編集者: まみ 編集日時 2007-10-31 16:00 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-31 17:26
100%再現する方法はわかりませんが、再現しました。
試しにテキストボックスを置いてみたんですが、そのときから発生するようになりました。
(テキストボックスがあると必ず再現するわけではありません)
この場合、ボタンクリックイベントが発生していません。


#こういう不思議なことがおきるからshowModalDialogは使わないんです。。。

[ メッセージ編集済み 編集者: べる 編集日時 2007-10-31 17:29 ]
1

スキルアップ/キャリアアップ(JOB@IT)