1

ユーザーはフォームに入力してファイルをダウンロードします。フォームの結果は新しいウィンドウ(target = "blank")に読み込まれます。MVCコントローラーアクションは、成功した場合はFileResultを返し、失敗した場合は「SelfClosingPage」ビューを返します。

この背後にある目標は、ユーザーに新しいページでファイルをダウンロードさせることです。エラーが発生した場合、元の呼び出しページのURLは(/ DownloadFile urlに)変更されず、ユーザーは代わりにフォームページに留まります。エラーページに移動します。

これはすべてうまく機能しますが、1)ダウンロードが成功した場合は「ファイルをダウンロードしています。しばらくお待ちください」というメッセージを非表示にします。2)ファイルの場合はエラーメッセージを表示します。ダウンロードに失敗しました。

私はこれを行うためにCookieを使用し、Cookieの値を定期的にチェックするためにJS間隔を使用していました。動作しなかったか、動作しなくなった(元のページにCookieを表示することはできません)。

ご意見をお聞かせください。JSでC#コードを使用することはできません。これは、ページが読み込まれるときに1回実行され、JSをC#コードから切り離そうとしているため機能しないためです。

私の唯一の解決策はajaxjavascriptコールバックを行うことだと思いますが、それは避けたいと思います。

アップデート:

私が使おうとしていたのと同じアプローチを使用するこれらの関連するSOリンクを見つけました。

MVC3-ファイルのダウンロード-待機ステータスインジケーター

ブラウザがファイルのダウンロードを受信したことを検出する

アップデート2

再び動作しています。クッキーの有効期限は十分に長くなかったと思います(そうあるべきでしたが)。10分(ファイルのダウンロードはそれより長くはかからないはずです)から半日に変更しました。

4

0 に答える 0