Загрузка страницы для ASP.Net MVC - PullRequest
1 голос
/ 18 февраля 2009

Я использую ASP.Net MVC для создания веб-сайта, который должен выполнить некоторую обработку (5–10 секунд), прежде чем он сможет вернуть представление пользователю. Вместо того, чтобы оставлять пользователя уставиться на ледниковый индикатор выполнения, я бы хотел показать какой-нибудь анимированный GIF «Пожалуйста, подождите / мы скоро вернемся», чтобы заинтересовать его.

Кто-нибудь знает хороший подход к достижению этого?

(я нашел этот ответ, но это не совсем то, что мне нужно, он использует jQuery для извлечения данных после того, как представление было возвращено. Я хотел бы отобразить «Пожалуйста, подождите», пока они в ожидании появления представления)

Спасибо

1 Ответ

5 голосов
/ 18 февраля 2009

Я думаю, что решение, на которое вы ссылаетесь, будет работать для вас. Вам просто нужно, чтобы ваше первоначальное действие контроллера сразу же вернулось с сообщением «пожалуйста, подождите», а затем вызовите AJAX для фактического получения содержимого на основе вашей обработки. Если запрос действительно занимает 5-10 секунд, вам также может потребоваться изменить значение тайм-аута для запроса AJAX, чтобы он мог завершиться. Я не знаю, каково время ожидания по умолчанию, но оно может быть меньше, чем вам нужно.

РЕДАКТИРОВАТЬ Пример:

Посмотреть код:

<script type="text/javascript">
     $(document).ready( function() {
         $.ajax({
            type: "POST",
            url: '<$= Url.Action("GetSlowData","Controller") %>',
            data: 'id=<%= ViewData["modelID"] %>',
            timeout: 15000,  // wait upto 15 secs
            success: function(content){
               $("#container").html(content);
            }
         });
     });
</script>

...

<div id="#container">
   Please wait while I retrieve the data.
</div>

Контроллер

public ActionResult ViewMyData( int id )
{
     ViewData["modelID"] = id;
     return View();
}

[AcceptVerbs( HttpVerbs.Post )]
public ActionResult GetSlowData( int id )
{
     var model = ... do what you need to do to get the model...

     return PartialView(model);
}

Вам также понадобится частичное представление (ViewUserControl), которое принимает вашу модель и отображает представление модели. Обратите внимание, что это не завершено - вам нужно добавить обработку ошибок, вы можете рассмотреть, что произойдет, если javascript не включен, ...

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