我正在生成让我们说1000条记录到数据库。这意味着需要一些时间。现在,用户可能变得不耐烦。所以我想在生成过程中向他展示一个进度条,这在Controller中发生。我在jquery或flash中发现了非常酷的进度条,但我不知道如何使用它们,因为在向一个动作发送请求之后,我创建一个新视图页面(我知道)的第一个数据是在控制器操作完成。逐渐发布数据以查看asp.net mvc
任何想法何时显示进度条以及如何发送一些数据,以便它“加载”?
在此先感谢。
我正在生成让我们说1000条记录到数据库。这意味着需要一些时间。现在,用户可能变得不耐烦。所以我想在生成过程中向他展示一个进度条,这在Controller中发生。我在jquery或flash中发现了非常酷的进度条,但我不知道如何使用它们,因为在向一个动作发送请求之后,我创建一个新视图页面(我知道)的第一个数据是在控制器操作完成。逐渐发布数据以查看asp.net mvc
任何想法何时显示进度条以及如何发送一些数据,以便它“加载”?
在此先感谢。
我是新来的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>
也许你应该调用服务器为Ajax请求
一种方式我看到的是在webinterface为buildserver TeamCity的。
它显示了您的构建的进度。进度条被设置为最后一次构建的持续时间。
它并不完美,但足以胜任。如果所做的工作总是可比较的(比如构建的持续时间),那么可以尝试这种方式。
如果您正在使用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动画的进度条。