2009-05-28 11 views
0

私は自分のサイトに、ドキュメントをダウンロードする前に詳細を記入しなければならないページがあります。ユーザーの詳細セクションは、MultiViewコントロールの最初のビューにあります。asp.net make button MultiViewの異なるビューを表示してファイルをダウンロードします。

詳細を記入したら、ユーザーにボタンをクリックすると、ファイルダウンロードのプロンプトが表示されます(私はこれをashxハンドラで成功させました)次にの2番目のビューページにリダイレクトします。 MultiViewは「ダウンロードしてくれてありがとう」とかそのようなことを言うでしょう。

私は通常、ボタンクリックイベントハンドラ内でResponse.Redirect("~/DownloadHandler.ashx");を試しましたが、これはページがポストバックを完了してMultiViewの最後のページを表示しないようにします。

これを回避する方法はありますか、それともこれに対応するためにUIを変更するだけですか?

編集:私はこれは、彼らがしているブラウザに依存しない一貫したユーザーエクスペリエンスを提供して、それだけで(私の確認ページで、それに応じて文言を変更)文書へのハイパーリンクを提供するために、より良いだと結論づけました を使用して。

答えて

1

マルチビューの2番目のビューに移動してください。あなたのページでは、ドキュメントをダウンロードし、お使いのcodebehind.1例:からそれをトリガするjavascriptの方法、

を追加します。

<script> 
function downloadFile(url) { 
window.location = url; 
//you could also try window.open(url, 'Download') 
} 
</script> 

をあなたのコードでは背後にある:

script = string.Format("downloadFile('{0}');", "DownloadHandler.ashx"); 
Page.ClientScriptManager.RegisterStartupScript(typeof(Page), "download", script, true); 

をまたできましたファイルをダウンロードする前に、(setTimeoutを使用して)遅延を追加してください。

さらに詳しい情報: Initiating a file download that works well, even in IE?

関連する問題