0

状況によっては、実行に数分かかる場合がある FileResult コントローラー アクションがあります。メッセージ、スピナー、進行状況バーなど、アクションが実行中であることをユーザーに視覚的に示したいと考えています。問題は、アクションが完了したことをフロントエンドで「検出」する方法を理解するのに苦労していることです。

私は FileResult アクションへの Ajax 呼び出しをいじっていますが、Ajax はブラウザーにファイルを返すことができないため、うまくいきません。Asynchronous Actions and Tasks も調べましたが、FileResult は必要な "await" キーワードをサポートしていないようです。

現時点では、次に何を試すべきかわかりませんが、考えやアイデアに対して非常にオープンです。

編集:

bobekが提案したように、これを機能させました。基本的に、PDF ファイルをディスクに保存し、ファイル パスを ActionResult Content(fullFilePath) として返します。次に、私のページで、このようなものを使用して、アクションの実行中に小さなスピナー gif を表示し、完了後にファイルへのリンクを表示しました。

var img = $("img#reportLoadingIcon");
var link = $('a#exportedFileLink');
link.hide();
img.show();

$.ajax({
    url: url,
    success: function (result) {
        link.attr({target: '_blank', href: result});
        link.show();
        img.hide();
    }
});
4

1 に答える 1

0

AJAX 経由で呼び出される通常の POST アクションにすることができます。ファイルを返す代わりに、ファイルへのパスを返し、ユーザーをそのパスにリダイレクトできます。

于 2014-02-04T22:39:40.733 に答える