我使用c#在asp.net中创建一个Web应用程序,它一次从http Web服务收集大量信息。由于此数据收集过程需要10-20秒,因此我想显示一个带有小旋转图像的小型加载框架。
为了在一个页面上实现这一点,我有一个名为loadingdiv
的div,我在Visible
期间将false
属性设置为PageLoad
。当我按下“查找电影”按钮时,c#代码应该隐藏最初在页面上的内容,在后端加载Web服务信息时显示加载图像,然后隐藏加载图像并调出数据显示div。
如果我注释掉从webservices加载数据的类,这可以正常工作。但是,只要我添加了我的网络服务信息,它就会完全跳过loadingdiv.Visible = true
行,只进行10-20秒的操作。
以下是相关的代码行。
protected void btnFindMovies_Click(object sender, EventArgs e)
{
//Hides the main content that contained search options for movies
thisarticle.Visible = false;
articlediv.Visible = false;
lblGenres.Visible = false;
ratingdiv.Visible = false;
List<int> gList = new List<int>(); //Genre List
/* Other code that goes through checkboxes to find out which genres
to search for in the movie search */
string title = "Movie Title Here";
Page.Title = title;
loadingdiv.Visible = true; //Shows loading div before completing search
MovieSearch search = new MovieSearch(gList); //Intensive web service use
(10-20 seconds)
loadingdiv.Visible = false; //removes the loading div from the screen
}
如何在我的网络服务运营过程中显示loadingdiv
?
答案 0 :(得分:3)
该方法中的所有内容都会在 之前发生,然后向用户提供任何响应。这意味着发生以下情况:
btnFindMovies_Click
被解雇。您设置Visible = true
,等待网络服务返回其信息,然后设置Visible = false
。因为这一切都是在同一个请求上完成的,所以在完成所有这些操作之前,不会向浏览器返回任何内容,这有效地完全消除了loadingdiv.Visible = true;
行。
如果您希望在某些服务器端代码向Web服务发出请求时显示加载div,则必须使用AJAX异步进行这些调用,并使用Javascript相应地隐藏/显示加载div。
以下内容似乎是一本有用的AJAX入门指南:
http://www.simple-talk.com/dotnet/asp.net/ajax-basics-with-jquery-in-asp.net/