Tôi có một trang thực hiện tác vụ dài (10 đến 15 giây) trong phương thức page_load.ASP.NET - Hiển thị thông báo khi trang đang tải
Tôi có mã javascript phía máy khách sẽ hiển thị gif động "tải trang" phong nha cho người dùng.
Tôi có thể gọi phương thức JavaScript từ mã sau, để hiển thị gif động "tải trang", tuy nhiên, tác vụ dài hạn đang treo lên giao diện người dùng sao cho hình động không thực sự hiển thị cho đến khi hoàn thành nhiệm vụ dài hạn, điều đó hoàn toàn trái ngược với những gì tôi muốn.
Để kiểm tra điều này, trong phương thức page_load của tôi, tôi thực hiện cuộc gọi đến phương thức JavaScript để hiển thị gif động. Sau đó, tôi sử dụng Thread.Sleep (10000). Điều gì xảy ra là gif động không hiển thị cho đến sau khi Thread.Sleep hoàn tất.
Rõ ràng tôi đang làm điều gì đó không chính xác.
Mọi lời khuyên sẽ được đánh giá cao.
Cảm ơn.
Chris
Dưới đây là một ví dụ về code-behind:
protected void Page_Load(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript
(GetType(), "Javascript", "javascript: ShowWaitIndicator(); ", true);
Response.Flush();
Thread.Sleep(10000);
}
Bạn không thể gọi javascript từ mã phía sau. Tất cả những gì bạn có thể làm là thêm nó vào luồng phản hồi, đó là những gì ClientScript.RegisterStartupScript đang làm. Điều này cuối cùng sẽ được gửi trở lại trình duyệt. Đó là hai bối cảnh hoàn toàn khác nhau. Codebehind chạy trên máy chủ, javascript thực hiện trên trình duyệt. – womp