Индикатор выполнения вызова контроллера в Asp.Net MVC 2 - PullRequest
1 голос
/ 22 декабря 2010

Я хочу показать индикатор выполнения, когда пользователь отправляет форму, потому что этот процесс может занять около 8-10 секунд, поэтому я хочу показать индикатор выполнения, чтобы у пользователя было представление о том, сколько времени это займет. Этот процесс будет выполняться при простом вызове действия контроллера, такого как обычная обратная передача без участия ajax. Так как я могу решить эту задачу, я использую asp.net MVC 2

1 Ответ

2 голосов
/ 22 декабря 2010

Fraz,

Пока я замечаю, что вы говорите: «НЕТ AJax ЗАЯВЛЕНО», я подумал, что я бы добавил это для информационных целей.

Пока вас не волнует индикатор 'ожидания ожидания', показывающий точный прогресс, есть простой способ сделать это с помощью jquery, и мой ответ здесь зависит от этого.

По сути, создайте представление «Ожидание», которое содержит простое сообщение и встроенный в него анимированный GIF. затем просто запустите вашу вставку (или длительное действие) по следующей схеме:

$(document).ready(function() {
    $('#btnSave').click(function() {
        $.ajax({
            type: "POST",
            url: '<%=Url.Content("~/Booking/Save") %>',
            data: { data: prepareData() }, // your data properties to be saved
            beforeSend: beforeQuery(),
            success: function(data) {
                saveDataResponse(data);
            },
            error: function(xhr) { alert(xhr.statusText); }
        });

    });
});

// here we show the 'wait' view prior to processing starting
function beforeQuery() {
    var url = '<%= Url.Action("Wait", "Booking") %>';
    $("#mainDiv").load(url);
}

// when the long running process has completed (or error'd)
// either populate mainDiv with the details view of the booking 
// or show the error appropriately
function saveDataResponse(data) {
    if (data.length != 0) {
        if (data.indexOf("ERROR:") >= 0) {
            $("#mainDiv").html(data).css('backgroundColor','#eeaa00');
        }
        else {
            $("#mainDiv").html(data);
        }
    }
}

очевидно, было бы немного больше для условий ошибок и т. Д., Но это основной «шаблон».

надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...