停止等待usercontrol完成加载的页面

时间:2011-01-28 11:25:32

标签: c# asp.net vb.net

有没有办法停止主页面等待用户控件加载才能完成加载?

我有一个用户控件,它必须执行大量的数据库调用,这可能需要几秒钟才能使页面加载缓慢。 理想情况下,我希望直接加载主页面,然后在准备就绪时显示用户控件内容。

我想不出这样做的方法!

帮助!

贝克斯

4 个答案:

答案 0 :(得分:0)

是的,有办法。它叫做AJAX(http://en.wikipedia.org/wiki/AJAX)。但是,在单个请求中无法做到这一点。

此外,您可以使数据库调用异步(开始/结束方法)并在控制生命周期的某个早期阶段启动调用,然后在稍后阶段结束请求。这样,ASP.NET可以继续处理您的页面,同时等待数据库响应。根据您的逻辑工作流程和时序,这可以将加载时间缩短一半或不执行任何操作。

答案 1 :(得分:0)

不是真的。除非您使用ajax来请求需要很长时间才能生成的内容。 您必须了解控件和页面都由服务器处理,并且返回浏览器的唯一内容是html。在整个页面(包括所有控件)处理完毕之前,没有任何内容发送到浏览器。

答案 2 :(得分:0)

对你的问题的简短回答以及你希望如何运作是不对的。 “页面”是服务器端的东西,它需要在浏览器看到它之前完成处理。

但是,为了实现您所需要的功能,您可以在浏览器中使用JavaScript(AJAX)再次调用服务器,然后再将该数据作为JSON数组或XML文档发回然后你必须解析并构造html才能显示它。或者你的回复可能是你可以直接插入DOM的HTML。

获得所需响应的一种简单方法是构建另一个承载此控件的页面,除了控件本身之外,页面的标记没有其他html。您可以对此页面进行AJAX调用,响应将是控件生成的html。你把那个html插入到你想要它的DOM中。当然,在你的AJAX调用中,你还需要发送这个其他页面需要的任何参数,这样控件就可以完成它。

我很害怕,如果你是AJAX和DOM的新手,那么所有这些听起来都会非常复杂。

答案 3 :(得分:0)

查看Ajax Control Toolkit中的DynamicPopulate控件。

您可以在此处找到示例:DynamicPopulate