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