1

ASP .Net MVC 4.0vs10MSSQL 2008を使用

私のページの1つで実行されるストアドプロシージャがあります。通常、実行には 30 ~ 50 秒かかります。この処理時間中に gif 画像が読み込まれる警告ダイアログを表示したいと考えています。sqlcommand でストアド プロシージャを実行しています。プロセスは、[プロセス] ボタンをクリックして開始されました。プロセスが終了すると、ページは別のビューを返します。

JavaScriptの知識が乏しいので、簡単な方法を教えてください。

編集:

ボタンクリックで画像を表示し、他のコードビハインド プロセスを実行することは可能ですか?

お気に入り:

<script type="text/javascript">
    function showImage() {
        document.getElementById('Processing').style.visibility = visible;
    }
</script>

<div id="progessbar">
     <img alt="Processing" src="../../Images/Processing2.gif" id="Processing" style="visibility:hidden"/>
</div>
4

2 に答える 2

0

MVCリクエストには時間がかかるため、従来の方法でやろうとしていることを達成するのは困難です。これは、リクエストを非同期で処理するAJAXを使用してより適切に実行されます。また、jQueryUIダイアログまたは任意のモーダルを使用して、進行状況インジケーター、または任意のカスタムJSを表示することをお勧めします。

私はjQueryBlockUIを個人的に気に入ってモーダルを作成していますが、それは単なる好みです。

/** Using a wrapper to show/hide the progress indicator.
    Swap the blockUI with any library or custom JavaScript for displaying the progress indicator.
 */
var showProgress = function() {
    $.blockUI({ message: '<img src="progressImage.gif" />' });
};

var hideProgress = function() {
    $.unblockUI();
;}

/** Trigger to submit the form */
$('#submit').click(function() {
    /** Show an indicator before making an AJAX request*/
    showProgress();
    $.ajax({
        url: '/someEndpoint',
        data: $.toJSON({/* some JSON param */}),
        type: 'POST', 
        dataType: 'json',
        timeout: 50000 /** Override timeout in ms accordingly */

    }).done(function(data){
        /** Remove the indicator once the request has succeeded and process returned data if any. */
        hideProgress();
    });
    return false;
});
于 2013-01-28T08:27:13.007 に答える
0

プロセスに使用ajaxします。「gifの表示」と目的のコードの完成を並行処理します。この方法でページ メソッドを使用できますJQuery-AJAX: [1]: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

成功のコールバックには、返されるデータを含むパラメーターが含まれています。

または、これを簡単に試すことができます

var actionURL = "(Your disired action e.g /index.jsp)"
$.ajax({
cache:false,
url: actionURL,
beforeSend: function( xhr ) {
    xhr.overrideMimeType( 'text/plain; charset=UTF-8' );
    $("#progessbar").show();
    //Here you can write any code to execute before the action like gif loading etc
},
success: function( data ) {
    alert("Success Conditions");
    //"data" is what u gets from your target. You can see by alert(data); here
    //Here you can write any code which you want to execute on finding the required action successfully
},
complete: function(){
    alert("Complete Conditions");
    $("#progessbar").hide();
    //Here you can write any code which you want to execute on completion of the required action you given in actionURL
},
error: function(){  
    alert("Error Conditions");
}
});

注: アラートは説明用です。独自のコードを記述することもできます。このコードには、jqueryプラグインを含める必要があります。公式サイト [l] からダウンロードできます: http://jquery.com/

于 2013-01-28T08:44:28.020 に答える