【发布时间】:2019-07-23 15:00:47
【问题描述】:
我使用下面的代码来显示来自 asp.net 后面代码的警报消息。
Home.aspx:
<asp:ScriptManager runat="server" ID="smHome"></asp:ScriptManager>
Home.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowStartStatus", "javascript:alert('Process is started');", true);
LoadGridView();
}
}
protected void LoadGridView()
{
//ADO.NET code here
ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowCompletedStatus", "javascript:alert('Process is completed');", true);
}
但在完成 LoadGridView() 方法中可用的 ADO.NET 进程后,两条警报消息都已连续显示。我想在 LoadGridView() 方法之前显示第一条警报消息。我还需要在完成 ADO.NET 进程后显示第二条警报消息。我也尝试过 ClientScriptManager.RegisterClientScriptBlock 方法来显示这些警报消息。但它也没有按预期工作。如何解决上述问题?
【问题讨论】:
-
您是否意识到后端完成,前端开始运行?前端和后端不一起运行。
-
“我想在 LoadGridView() 方法之前显示第一条警报消息”。你不能。您似乎不了解您的页面生命周期。基本上,当您的浏览器尝试加载您的 aspx 页面时,它会向服务器发送一个 HTTP 请求。 ASP.NET 在您的 aspx 代码隐藏中运行代码。然后它将结果数据(即一个网页,可能包括 HTML、CSS 和 JavaScript)返回给浏览器。然后服务器停止执行代码。该页面现在位于用户的浏览器中。此时,页面中包含的任何 JavaScript 代码都将由浏览器编译和执行。
-
@ADyson,有没有其他方法可以实现上述要求?
-
在浏览器向服务器发出另一个请求(例如通过单击链接或提交表单或其他内容)之前,不再运行 .NET 代码。如果您想在加载 gridview 时在屏幕上显示一条消息,那么您必须加载页面、显示消息并通过 AJAX 请求触发 gridview 的加载(在 ASP.NET WebForms 中,您通常可以通过使用 UpdatePanel 控件很好地实现这一点),以便加载发生在对服务器的单独请求中(并且 AJAX 请求特别不会导致页面的其余部分同时重新加载)。
-
我建议您学习 Microsoft 提供的 ASP.NET 页面生命周期文档,和/或更通用的教程/指南,这些教程/指南通常会解释 HTTP 生命周期。也许也读一下:stackoverflow.com/questions/13840429/…
标签: javascript c# asp.net code-behind