2009-07-13 32 views
1

我正在生成让我们说1000条记录到数据库。这意味着需要一些时间。现在,用户可能变得不耐烦。所以我想在生成过程中向他展示一个进度条,这在Controller中发生。我在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的。

它显示了您的构建的进度。进度条被设置为最后一次构建的持续时间。

它并不完美,但足以胜任。如果所做的工作总是可比较的(比如构建的持续时间),那么可以尝试这种方式。

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 ..." /> 

该代码会显示,虽然一个Ajax请求运行隐藏GIF动画的进度条。