对于ASP.NET页面加载时间长的,可以在客户端的浏览器中显示进度条,显示页面正在加载,那么asp.net 生成静态页时的进度条显示怎么实现呢?下面就让错新技术频道小编带你来了解!
而我们用模拟的话,只需要让线程延迟执行就可以了。比如下面的代码:
显示结果:
时间都不一样,如果没有让线程延迟,那么这里的时间都是一样的。而我们需要做的仅仅是:
别忘记了引入命名空间:
而且输出的时候是一次性就全部输出的,并不是每隔一秒就输出一行(是可以实现的,后面会讲到)。如果按那样写每隔一秒就输出一行该有多好啊。根据这个原理,如果只需要制作生成静态时表明正在生成的过程,而不需要进度显示,那么可以这样:
在Button按钮的添加一个
表明在按下按钮的同时触发客户端事件,而客户端就是创建一个等待中的div。效果如下:
creatload函数代码如下:
执行完后这个div就自动消失了。
有了上面的铺垫,现在开始进入正题,我们肯定是要实现每隔一秒就输出一行的这种效果,而这其实很容易实现,只要让页面不缓冲就可以了再配合线程延迟就可以做到了。在Page中关闭缓冲区:
Buffer="false"
接下来,我们只要找一个进度条效果,再统计出需要生成静态页的文章总数,根据当前生成的文章为第几条记录,算出已经执行到总数的百分之几。再实时调用一次js函数实现进度块的变化,就OK了。
关于进度条,大家可以上网随便找一个,我用了这里的一个进度条效果,因为简单。http://www.jb51.net/article/18177.htm
当然,这个进度条并不适合我们现在的具体使用,关键部分的js需要修改如下:
以下则是关键的c#后台代码的关键,按照上面这个函数,我们主要根据执行到的记录,输出类似以下的代码:
按照这样的输出,输出这些字符必须在js,css,以及相关html代码之后才可以输出,否则在头部就输出的话,肯定不行。因为前面都没有这个函数,就执行到这个函数。(你想用Literal控件去控制其输出位置?你可以自己试下,有什么结果?)所以,索性我们把相关进度条的代码一次性输出,可以把其做成一个html文件,这个也是在网上看到一篇文章的时候的做法。名为bar.htm
而我们用来模拟的代码如下:
FileObj.ReadFile是读取这个htm文件,这个函数及其相关文件操作类,大家可以在这篇文章中得到!http://www.jb51.net/article/15125.htm加上条件语句
是因为bar.htm在读取出来之后,只需要输出一次就可以了。最终效果如下:
通过错新技术频道小编介绍的asp.net 生成静态页时的进度条显示,相信大家都有了一定的了解,如需了解更多的相关资讯,请继续关注错新技术频道吧!
新闻热点
疑难解答
图片精选