01.
Imports
System.Data
02.
Imports
System.Configuration
03.
Imports
System.Web
04.
Imports
System.Web.Security
05.
Imports
System.Web.UI
06.
Imports
System.Web.UI.WebControls
07.
Imports
System.Web.UI.WebControls.WebParts
08.
Imports
System.Web.UI.HtmlControls
09.
10.
Imports
System.Collections
11.
Imports
System.Text
12.
13.
14.
15.
16.
Public
Class
MessageBox
17.
Private
Shared
m_executingPages
As
New
Hashtable()
18.
19.
20.
21.
22.
Public
Sub
New
()
23.
End
Sub
24.
25.
Public
Shared
Sub
Show(sMessage
As
String
)
26.
27.
If
Not
m_executingPages.Contains(HttpContext.Current.Handler)
Then
28.
29.
Dim
executingPage
As
Page = TryCast(HttpContext.Current.Handler, Page)
30.
31.
If
executingPage IsNot
Nothing
Then
32.
33.
Dim
messageQueue
As
New
Queue()
34.
35.
messageQueue.Enqueue(sMessage)
36.
37.
38.
m_executingPages.Add(HttpContext.Current.Handler, messageQueue)
39.
40.
41.
AddHandler
executingPage.Unload,
New
EventHandler(
AddressOf
ExecutingPage_Unload)
42.
End
If
43.
Else
44.
45.
46.
47.
48.
Dim
queue
As
Queue =
DirectCast
(m_executingPages(HttpContext.Current.Handler), Queue)
49.
50.
queue.Enqueue(sMessage)
51.
End
If
52.
End
Sub
53.
54.
55.
56.
Private
Shared
Sub
ExecutingPage_Unload(sender
As
Object
, e
As
EventArgs)
57.
58.
Dim
queue
As
Queue =
DirectCast
(m_executingPages(HttpContext.Current.Handler), Queue)
59.
60.
If
queue IsNot
Nothing
Then
61.
Dim
sb
As
New
StringBuilder()
62.
63.
Dim
iMsgCount
As
Integer
= queue.Count
64.
65.
sb.Append(
"<script language='javascript'>"
)
66.
67.
Dim
sMsg
As
String
68.
69.
While
System.Math.Max(System.Threading.Interlocked.Decrement(iMsgCount),iMsgCount + 1) > 0
70.
sMsg =
DirectCast
(queue.Dequeue(),
String
)
71.
sMsg = sMsg.Replace(vbLf,
"\n"
)
72.
sMsg = sMsg.Replace(
""
""
,
"'"
)
73.
sb.Append(
"alert( "
""
& sMsg &
""
" );"
)
74.
End
While
75.
76.
sb.Append(
"</script>"
)
77.
78.
m_executingPages.Remove(HttpContext.Current.Handler)
79.
80.
HttpContext.Current.Response.Write(sb.ToString())
81.
End
If
82.
End
Sub
83.
End
Class