Показывать «загрузочное» сообщение перед тем, как представление возвращается действием - PullRequest
0 голосов
/ 05 июля 2011

У меня 2 разных типа пользователей

Когда я вхожу, я отправляю свою страницу в аккаунт / логин

В зависимости от типа пользователя, которого я перенаправляю (используя RedirectToAction) на

Учитель / индекс Или же Студент / индекс.

Действие Student / index является простым и немедленно возвращает его представление.

Но действие «Учитель / индекс» имеет огромный доступ к данным, и представление будет возвращено только через одну минуту. (Я оптимизирую доступ к данным, не беспокойтесь об этом, потому что он не является частью этого поста)

В течение одной минуты я хочу показать сообщение «загрузка» в браузере.

Как я могу это сделать?

У меня есть Jquery и MVC2

1 Ответ

3 голосов
/ 05 июля 2011

Одна возможность состоит в том, чтобы разделить это действие на две части: одну, которая будет отображать простой вид, и другую, которая будет выполнять тяжелую атлетику и визуализировать частичную часть.Поэтому, когда учитель входит в систему, вы перенаправляете на первое действие и отображаете простое представление HTML, содержащее счетчик.Затем вы вызываете AJAX-вызов для второго действия, чтобы получить доступ к данным, вводите частичное в DOM и скрываете прогресс.

Таким образом, вы можете поместить что-то вроде этого в представление:

<img id="progress" src="progress.gif" alt="" />
<div id="result" data-url="<%= Url.Action("TeacherData") %>"></div>

, а затем в отдельном файле js вызвать вызов AJAX:

$(function() {
    $.ajax({
        url: $('#result').data('url'),
        type: 'POST',
        complete: function() {
            $('#progress').hide();
        },
        success: function(result) {
            $('#result').html(result);
        }
        error: function() {
            alert('oops');
        }
    });
});

и на вашемконтроллер:

public ActionResult Teacher()
{
    return View();
}

[HttpPost]
public ActionResult TeacherData()
{
    var model = ... do the heavy data access
    return PartialView(model);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...