我有这个脚本以运行警报窗口:
<asp:Content ID="RegisterMain" ContentPlaceHolderID="MainContent" runat="server">
<script language="javascript" type="text/javascript">
function popup(msg) {
window.alert(msg);
window.window.focus();
}
</script>
.........
</asp:Content>
我在后面的代码中也有这个程序来运行这个脚本:
Public Sub PostError(inheretedPage As System.Web.UI.Page, sender As Object, msg As String)
Dim cstype As Type = inheretedPage.GetType()
Dim innerMess As String = msg
Dim url As String = HttpContext.Current.Request.Url.AbsoluteUri
Dim script As String = "popup('" & innerMess & "')"
If Not Page.ClientScript.IsStartupScriptRegistered(inheretedPage.GetType(), "alertscript") Then
Page.ClientScript.RegisterStartupScript(cstype, "alertscript", script, True)
End If
End Sub
当我直接从后面的代码运行以下指令时,在它开始之前,一切顺利:
PostError(Me, sender, "Your e-mail address is not good")
该程序进一步进入一个类,以便为数据库和服务器进行处理。
如果类中出现错误,我使用该行返回错误以供显示。
Catch ex As OleDbException
Dim SHandler As New Web.SQLServer.DBHandler
ErrorAnswer = SHandler.GetError(ServerConn.Provider, ex, Nothing)
retVal = False
End Try
Return retVal & "|" & faultReason & "|" & ErrorAnswer
在这种情况下,我将错误消息收回到后面的代码中,作为Class中的返回变量,并使用以下指令在此过程中处理它:
ErrorAnswer = "Server is open, and base is closed"
PostError(Me, sender, ErrorAnswer)
正如我们所看到的,在两种情况下,指令都是相同的,首先是代码执行的方式
现在我的问题是Direct指令从脚本传递并执行得很好,但间接(来自Class)没有执行脚本,即使她所有的变量都像直接一样。
在第二种情况下不调用脚本。
其他信息
在第一种情况下,程序PostError
具有:
cstype = {Name = "pages_account_register_aspx" FullName = ASP.pages_account_register_aspx"}<br/>
popup('Your e-mail is not right')
在第二种情况下,相同的部分具有:
cstype = {Name = "pages_account_register_aspx" FullName = ASP.pages_account_register_aspx"}<br/>
script = "popup('Login timeout expired')"
答案 0 :(得分:1)
我终于找到了问题...脚本不接受vbCrLf
这个命令没有从脚本执行...谢谢alll