0

私は asp/vb.net Web アプリを持っています。サイトの残りの部分との一貫性を保つために、AJAX を使用しており、コントロール ボタンは ascx からイベントを発生させます。ダウンロード ボタンのクライアント クリックは、アカウントのアクセス許可を処理するために既に使用されています。

私のCSV関数へのダウンロードはresponse.writeを使用し、AJAXを書き込んだら出力は停止しましたが、コードはまだ起動しています。

現在、response.write を実行するために、別の ajax されていない空の aspx を作成しています。これは、コントロール ボタンが登録するスタートアップ スクリプトを介して、新しいタブ/ウィンドウで開かれています。

より良い戦略が必要です。何かご意見は?

4

2 に答える 2

1

本当の答えではありませんが、回避策を共有する必要があると思います。

シンプルな onclientclick="myfunction" で新しい aspx を開きます

        function myfunction() {
                window.open('downloader.aspx?variable=something', '','width=400,height=200');
        }

次に、ページの読み込みにより、クエリ文字列が次のようなダウンロード関数にフィードされます

Download(Request.QueryString("変数"))

とダウンロードが使用できるようになりました

    Response.Clear()
    Response.ContentType = "text/csv"
    Response.AddHeader("Content-Disposition", "filename=myFileName) & ".csv")

次に、文字列ビルダーを使用してヘッダーとcsvを書き出しました

stringBuilder.Append("My Explainitory Header" & vbCrLf)
stringBuilder.Append("column 1 Header, column 2 header" & vbCrLf)
for each record in table
    stringBuilder.append(value1 & "," & value2 & vbCrLf)
next
response.write(StringBuilder.toString)
response.end()
response.clear()

ダウンロードだけでなく、ページへの出力を防ぐにはクリアが必要です。結果はブラウザの設定によって異なりますが、保存/開くプロンプト、Excel への自動オープン、または chrome/FF のいずれかでファイルをダウンロードし、ダウンロードしたファイルのリンクを画面下部のダウンロード バーに表示します。自動で開くとファイル名がエクセルで上書きされることがある。

FF Chrome および IE 10-7 で動作

私の場合、最初にいくつかのフォーム処理を行い、次に window.open に scriptmanager.registerstartupscript を実行するため、ポップアップ ブロッカーが問題になりますが、これは回避可能です。

于 2013-08-07T23:05:29.430 に答える