Постепенно публикуем данные для просмотра asp.net mvc - PullRequest
1 голос
/ 13 июля 2009

Я генерирую, скажем, 1000 записей в базу данных. Это означает, что это занимает некоторое время. Теперь пользователь может стать нетерпеливым. Поэтому я хочу показать ему индикатор выполнения во время процесса генерации, который происходит в Controller. Я нашел довольно крутые индикаторы выполнения в jquery или flash, но я понятия не имею, как их использовать, так как после отправки запроса к действию первые данные, которые я получаю для создания новой страницы просмотра (я знаю), получены действие контроллера завершено.

Есть идеи, когда показывать индикатор выполнения и как отправить на него некоторые данные, чтобы он "загружался"?

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 13 июля 2009

Я новичок в asp mvc (и переполнение stck). Но мой подход заключается в том, чтобы начать процесс создания записи в новом потоке. Перенаправить на представление, которое загружает частичное представление с индикатором выполнения. затем обновите партиал сценарием для этого представления. что-то вроде:

<div id="documents-partial">
  <% if (ViewData["IsDone"] == false) { %>
    <% Html.RenderPartial("ProgressBar", ViewData["Progress"]); %>
  <% }else{ %>
    <% Html.RenderPartial("Records", ViewData["Records"]); %>
  <% }
</div>

<script type="text/javascript">
  $(document).ready(function() {
    update();
  }
  function update(){
    $('div#id-of-where-you-want-to-load-partial-view').load('/Records/CheckForUpdate', {param1: <%= ViewData["Progress"].Id %>}, update /*on callback calls the update method again*/ );
</script>
1 голос
/ 13 июля 2009

Может быть, вы должны сделать серверный вызов как ajax-запрос

0 голосов
/ 28 июля 2009

если вы используете ajax для извлечения записей, вы можете использовать это,

// Progress Bar -----------------------------
$().ajaxSend(function(r, s) {
    $("#contentLoading").show();
});

$().ajaxStop(function(r, s) {
    $("#contentLoading").fadeOut("fast");
});
//-------------------------------------------


<img id="contentLoading" src="../../Content/images/ajax-loader.gif" style="display:none"  alt="Updating ..." />

Этот код будет отображать и скрывать индикатор выполнения анимированных GIF-файлов во время выполнения запроса AJAX.

0 голосов
/ 14 июля 2009

Один из способов, который я увидел, был на веб-интерфейсе для команды buildserver teamcity.

Показывает прогресс вашей сборки. Индикатор выполнения установлен на время последней сборки.

Это не работает идеально, но достаточно хорошо, чтобы быть полезным. Если проделанная работа всегда сопоставима (например, продолжительность сборки), вы можете попробовать ее следующим образом.

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