2009-07-13 4 views
1

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

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

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

ответ

1

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

<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

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

0

Один, как я видел, был на webinterface для buildserver TeamCity.

Это показывает прогресс вашей сборки. Индикатор progressbar установлен на длительность последней сборки.

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

0

если вы используете 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 запрос работает.

Смежные вопросы