RegisterStartupScript不适用于ScriptManager,UpdatePanel。 这是为什么?

protected void timer1_Tick(object sender, EventArgs e) { foreach (RepeaterItem item in rpChat.Items) { TextBox txt = item.FindControl("txtChatMessage") as TextBox; if (txt != null) { message[i] = txt.Text; i--; } } lblStatusChat.Text = ""; RepeaterBind(); string javaScript = "<script language=JavaScript>\n" + "alert('Button1_Click client-side');\n" + "</script>"; Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript); } 

timer_click触发器和更新面板。 警报消息不会显示在timer_tick事件上

当你使用更新面板,那么你不能像上面调用JavaScript。 你必须使用

 ScriptManager.RegisterStartupScript 

所以改变你的

 Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", javaScript); 

 ScriptManager.RegisterStartupScript(updatePanelId,updatePanelId.GetType() , "alert", javaScript, true); 

您需要使用ScriptManager类,因为您在执行回发和使用updatepanel时是注册脚本

MSDN: ScriptManager.RegisterStartupScript

ScriptManager.RegisterStartupScript方法用于将控件包装到UpdatePanel中时将客户端脚本添加到页面。

ASPX页面

 <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Label ID="lblDisplayDate" runat="server" Text="Label"></asp:Label> <asp:Button ID="btnPostback" runat="server" onclick="btnPostback_Click" Text="ClickMe" /> </ContentTemplate> </asp:UpdatePanel> </div> 

CodeBehind注册StartUp脚本

 protected void btnPostback_Click(object sender, EventArgs e) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(@"<script language='javascript'>"); sb.Append(@"var lbl = document.getElementById('lblDisplayDate');"); sb.Append(@"lbl.style.color='red';"); sb.Append(@"</script>"); ScriptManager.RegisterStartupScript(btnPostback,this.GetType(), "JSCR", sb.ToString(),false); } 

详细信息: 在asynchronous回发期间使用RegisterStartupScript以编程方式添加JavaScript

在我的情况ScriptManager.RegisterStartupScript不起作用。

不行:

 ScriptManager.RegisterStartupScript(Me, Me.GetType(), String.Format("Data{0}", Me.ID), "<script>alert(111);</script>", False) 

工作:

 ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), String.Format("Data{0}", Me.ID), "<script>alert(111);</script>", False) 

Me在这个例子中是我的自定义控件从System.Web.UI.WebControls.WebParts.WebPartinheritance

它一定是稍后,但我在这里find了soluce http://forums.asp.net/p/1117430/5483679.aspx/1

您必须使用System.Web.UI.ScriptManager.RegisterClientScriptBlock而不是Page.ClientScript.RegisterStartupScript

当我这样做的时候它适用于我

 Private Sub test() ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "alert('hello')", True) End Sub 

但是当我添加SweerAlert它不会工作

 Private Sub test() ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "k1", "swal('Please Provide All Valid Message Information!')", True) End Sub 

你有什么想法,为什么它不工作。