如何从asp.net中的代码后面调用Javascript警报

时间:2019-03-01 14:48:38

标签: javascript c# asp.net code-behind

我已经使用下面的代码来显示来自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方法来显示这些警报消息。但是它也没有按预期工作。如何解决以上问题?

2 个答案:

答案 0 :(得分:2)

  

“我想在LoadGridView()方法之前显示第一条警报消息。”

不能。您似乎不了解页面的生命周期。

基本上,当您的浏览器尝试加载aspx页面时,它将向服务器发送HTTP请求。 ASP.NET在您的aspx代码背后运行代码。然后,它将结果数据(即网页,其中可能包含HTML,CSS和JavaScript)返回到浏览器。然后服务器停止执行代码。该页面现在位于用户的浏览器中。届时,页面中包含的所有JavaScript代码都将由浏览器编译和执行。直到浏览器再次向服务器发出请求(例如,通过单击链接或提交表单等)之后,.NET代码才会再次运行。

总结-JavaScript和.NET代码在不同的时间,不同的上下文中运行。您无法使用常规生命周期像这样使它们互锁。

如果要在加载gridview时在屏幕上显示消息,则必须加载页面,显示消息,并通过AJAX请求(在ASP.NET WebForms中触发)加载gridview您通常可以通过使用UpdatePanel控件很好地实现此功能),以便在对服务器的单独请求中进行加载(并且AJAX请求明确不会同时导致页面的其余部分重新加载)。 / p>

答案 1 :(得分:-1)

您尝试过吗?

ASP.NET Web Application Message Box

ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + message+ "');", true);
相关问题