Vb.net 使用ScriptManager.RegisterStartupScript时功能异常

Vb.net 使用ScriptManager.RegisterStartupScript时功能异常,vb.net,Vb.net,我在使用ScriptManager.RegisterStartupScript时遇到了一个奇怪的问题。基本上,当我点击一个按钮控件时,它会返回到服务器,检查是否有错误,我想发生的是,如果有错误,我想使用一个弹出框。按钮控件位于更新面板内。我认为实现这一点最简单的方法是使用javascript警报框。所以我终于让它工作了,但是当警报框出现时,它会弄乱我的菜单控件,直到警报框启动,然后它就正常了。这有点难以解释,所以我插入了一张图片,告诉你们点击按钮后发生了什么。如果有人能给我指出正确的方向,我不知

我在使用ScriptManager.RegisterStartupScript时遇到了一个奇怪的问题。基本上,当我点击一个按钮控件时,它会返回到服务器,检查是否有错误,我想发生的是,如果有错误,我想使用一个弹出框。按钮控件位于更新面板内。我认为实现这一点最简单的方法是使用javascript警报框。所以我终于让它工作了,但是当警报框出现时,它会弄乱我的菜单控件,直到警报框启动,然后它就正常了。这有点难以解释,所以我插入了一张图片,告诉你们点击按钮后发生了什么。如果有人能给我指出正确的方向,我不知道如何修复或发生了什么。他还使用我的代码

 Protected Sub btnPlan_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPlan.Click

 'Dim sb As New System.Text.StringBuilder
  sb.Append("<script language='javascript'>")
  sb.Append("alert(' No data in the database  ');")
  sb.Append("</script>")

    If (Not ClientScript.IsStartupScriptRegistered("JSScript")) Then
        ScriptManager.RegisterStartupScript(UpdatePanel5, Me.GetType(), "JSScript", sb.toString(), True)
    End If
受保护的子btnPlan\u单击(ByVal sender作为对象,ByVal e作为事件参数)处理btnPlan。单击
'将某人设置为新System.Text.StringBuilder
某人加上(“”)
sb.Append(“警报(‘数据库中没有数据’);”)
某人加上(“”)
如果(不是ClientScript.IsStartupScriptRegistered(“JSScript”)),则
ScriptManager.RegisterStartupScript(UpdatePanel5,Me.GetType(),“JSScript”,sb.toString(),True)
如果结束

您可以尝试使用RegisterClient ScriptBlock:

Protected Overrides Sub Page_Load(ByVal sender as Object, ByVal e As System.EventArgs)
     MyBase.Page_Load(sender, e)

     Try
         If Not ScriptManager.IsInAsyncPostBack Then
              Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "AlertScript", "<script type='text/javascript' language='javascript'>function YourAlert(){alert(' No data in the database  ');}</script>")
         EndIf
     Catch ex As Exception
     End Try
End Sub
Protected Overrides子页面加载(ByVal sender作为对象,ByVal e作为System.EventArgs)
MyBase.Page_加载(发件人,e)
尝试
如果不是ScriptManager.IsInAsyncPostBack,则
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(),“AlertScript”,“函数YourAlert(){alert('数据库中没有数据');}”)
恩迪夫
特例
结束尝试
端接头

谢谢你的建议。我用另一种方式剥皮,让它按照我想要的方式工作。我所做的是将消息放在一个隐藏的文本框中,并使用jquery确保页面已加载,然后在需要时提醒消息。

是否正在检查以确保脚本管理器不会发回?我在答案上加了一些细节。Try-Catch是为了让您可以在其中放置一个断点,以更高的分辨率查看正在发生的事情。在检查断点时,我看到它将进入if语句,但警报消息不再出现。嗯,在查看msdn的站点后,我想我需要为关键参数(例如编辑)推荐一个更好的建议。它可能无法解析Guid,因此失败。