我正在向数据库生成 1000 条记录。这意味着它需要一些时间。现在,用户可能会变得不耐烦。所以我想在生成过程中向他展示一个进度条,这发生在Controller中。我在 jquery 或 flash 中发现了非常酷的进度条,但我不知道如何使用它们,因为在向操作发送请求后,我创建新视图页面(我知道)的第一个数据是控制器动作完成。
任何想法何时显示进度条以及如何向它发送一些数据以便它“加载”?
提前致谢。
我正在向数据库生成 1000 条记录。这意味着它需要一些时间。现在,用户可能会变得不耐烦。所以我想在生成过程中向他展示一个进度条,这发生在Controller中。我在 jquery 或 flash 中发现了非常酷的进度条,但我不知道如何使用它们,因为在向操作发送请求后,我创建新视图页面(我知道)的第一个数据是控制器动作完成。
任何想法何时显示进度条以及如何向它发送一些数据以便它“加载”?
提前致谢。
也许您应该将服务器调用作为 ajax 请求
我是 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>
我看到的一种方法是在 buildserver teamcity 的 Web 界面上。
它显示了您的构建进度。进度条设置为最后一次构建的持续时间。
它并不完美,但足够有用。如果完成的工作始终具有可比性(例如构建的持续时间),您可以尝试这种方式。
如果您使用 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 进度条。