0

这是 Global.asax 中代码的一部分 我在下面标记的行上收到运行时错误(无效代码)。想不通为什么?

  If Not Request.RawUrl.IndexOf("crm/default.aspx") > 0 Then
            Dim sb As New System.Text.StringBuilder
            sb.Append("<DIV ID=""splashScreen"" STYLE=""WIDTH: 100%; HEIGHT: 100%; POSITION: absolute; Z-INDEX: 9999"">")
            sb.Append("<TABLE class=""page_border"" width=""100%"" height=""100%"" cellSpacing=""0"" cellPadding=""0"">")
            sb.Append("<TR>")
            sb.Append("<TD WIDTH=""100%"" HEIGHT=""100%"" ALIGN=""CENTER"" VALIGN=""MIDDLE"" class=""page_content"">")
            sb.Append("&nbsp;&nbsp;")
            sb.Append("Loading page.  Please wait ...")
            sb.Append("&nbsp;&nbsp;<br><br>")
            sb.Append("<IMG SRC=""/TOrders/library/media/images/wait.gif"" BORDER=1 WIDTH=75 HEIGHT=15>")
            sb.Append("</TD>")
            sb.Append("</TR>")
            sb.Append("</TABLE>")
            sb.Append("</DIV>")

      -- Getting a Run time Error on this line --------

            sb.Append("<script language=""javascript"">var k=document.getElementById(""splashScreen"");</script>")

      ---Even this line appears with squiggly line in the editor--

            sb.Append("<%Response.Flush%>")

         -----------------------------------------------------

            Response.Write(sb.ToString)

        End If
4

1 回答 1

0

@CM Kanode 是对的-我以前从未见过这种行为,但不知何故脚本标签正在杀死它-可能是一种安全功能。即使您在字符串内部,字符串的</script>一部分也会以某种方式杀死它。拆分出来解决了这个问题。这里的另一种选择是为您的全局使用代码隐藏文件,而不是将代码留在 .asax 文件中 - 然后您将处于纯 VB 环境中,而不是在 ASP.NET 标记中。

@Igor 也是正确的-您在该<%Response.Flush%>行中的代码块无效-即使您在 VB.NET 字符串中,但从技术上讲,您仍然在标记文件中,这<% %>使它看起来像是一个代码块-您可以在这样的 ASAX 文件中没有代码块。

正如@Igor 所指出的那样,无论如何将其写入响应是没有意义的,因为这是一个服务器功能,而不是使它成为实际响应的东西。

所以你需要处理这两个问题,也许是这样的:

sb.Append("<script language='javascript'>var k=document.getElementById('splashScreen');</sc" & "ript>")
Response.Write(sb.ToString)
Response.Flush
于 2013-06-06T15:19:28.950 回答