ユーザーはフォームに入力してファイルをダウンロードします。フォームの結果は新しいウィンドウ(target = "blank")に読み込まれます。MVCコントローラーアクションは、成功した場合はFileResultを返し、失敗した場合は「SelfClosingPage」ビューを返します。
この背後にある目標は、ユーザーに新しいページでファイルをダウンロードさせることです。エラーが発生した場合、元の呼び出しページのURLは(/ DownloadFile urlに)変更されず、ユーザーは代わりにフォームページに留まります。エラーページに移動します。
これはすべてうまく機能しますが、1)ダウンロードが成功した場合は「ファイルをダウンロードしています。しばらくお待ちください」というメッセージを非表示にします。2)ファイルの場合はエラーメッセージを表示します。ダウンロードに失敗しました。
私はこれを行うためにCookieを使用し、Cookieの値を定期的にチェックするためにJS間隔を使用していました。動作しなかったか、動作しなくなった(元のページにCookieを表示することはできません)。
ご意見をお聞かせください。JSでC#コードを使用することはできません。これは、ページが読み込まれるときに1回実行され、JSをC#コードから切り離そうとしているため機能しないためです。
私の唯一の解決策はajaxjavascriptコールバックを行うことだと思いますが、それは避けたいと思います。
アップデート:
私が使おうとしていたのと同じアプローチを使用するこれらの関連するSOリンクを見つけました。
MVC3-ファイルのダウンロード-待機ステータスインジケーター
アップデート2
再び動作しています。クッキーの有効期限は十分に長くなかったと思います(そうあるべきでしたが)。10分(ファイルのダウンロードはそれより長くはかからないはずです)から半日に変更しました。