如何从 asp.net 中的代码后面调用 Javascript 警报
How to call Javascript alert from code behind in asp.net
我使用下面的代码来显示来自 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 方法来显示这些警报消息。但它也没有按预期工作。如何解决上述问题?
"I want to show the first alert message before LoadGridView() method".
你不能。您似乎不了解页面的生命周期。
基本上,当您的浏览器尝试加载您的 aspx 页面时,它会向服务器发送 HTTP 请求。 ASP.NET 运行 是您的 aspx 代码隐藏中的代码。然后它 returns 结果数据(即一个网页,其中可能包括 HTML、CSS 和 JavaScript)到浏览器。然后服务器停止执行代码。该页面现在位于用户的浏览器中。届时,页面中包含的任何 JavaScript 代码都将由浏览器编译和执行。在浏览器向服务器发出另一个请求(例如,通过单击 link 或提交表单或其他内容)之前,不再需要 .NET 代码 运行s。
总而言之 - JavaScript 和 .NET 代码 运行 在不同的时间,在不同的上下文中。你不能让它们像使用传统生命周期那样互锁。
如果您想在加载 gridview 时在屏幕上显示消息,则必须加载页面、显示消息,然后通过 AJAX 请求触发 gridview 的加载(在 ASP.NET WebForms 中,您通常可以使用 UpdatePanel 控件很好地实现这一点),以便加载发生在对服务器的单独请求中(并且 AJAX 请求不会导致其余的您的页面同时重新加载)。
你试过吗?
ASP.NET Web Application Message Box
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + message+ "');", true);
我使用下面的代码来显示来自 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 方法来显示这些警报消息。但它也没有按预期工作。如何解决上述问题?
"I want to show the first alert message before LoadGridView() method".
你不能。您似乎不了解页面的生命周期。
基本上,当您的浏览器尝试加载您的 aspx 页面时,它会向服务器发送 HTTP 请求。 ASP.NET 运行 是您的 aspx 代码隐藏中的代码。然后它 returns 结果数据(即一个网页,其中可能包括 HTML、CSS 和 JavaScript)到浏览器。然后服务器停止执行代码。该页面现在位于用户的浏览器中。届时,页面中包含的任何 JavaScript 代码都将由浏览器编译和执行。在浏览器向服务器发出另一个请求(例如,通过单击 link 或提交表单或其他内容)之前,不再需要 .NET 代码 运行s。
总而言之 - JavaScript 和 .NET 代码 运行 在不同的时间,在不同的上下文中。你不能让它们像使用传统生命周期那样互锁。
如果您想在加载 gridview 时在屏幕上显示消息,则必须加载页面、显示消息,然后通过 AJAX 请求触发 gridview 的加载(在 ASP.NET WebForms 中,您通常可以使用 UpdatePanel 控件很好地实现这一点),以便加载发生在对服务器的单独请求中(并且 AJAX 请求不会导致其余的您的页面同时重新加载)。
你试过吗?
ASP.NET Web Application Message Box
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + message+ "');", true);