CSharp: asp.net MessageBox

 Demo 1: DHTML modal dialog box (dhtmlgoodies.com)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Web.UI;
using System.Web;
using System.Text;
using System.Collections;
 
namespace LeeGunn.Web.UI.MessageBox
{
    /// <summary>
    /// Summary description for MessageBox.
    /// </summary>
    public class MessageBox
    {
      private static Hashtable m_executingPages = new Hashtable();
 
        private MessageBox(){}
 
      public static void Show( string sMessage )
      {
         // If this is the first time a page has called this method then
         if( !m_executingPages.Contains( HttpContext.Current.Handler ) )
         {
            // Attempt to cast HttpHandler as a Page.
            Page executingPage = HttpContext.Current.Handler as Page;
 
            if( executingPage != null )
            {
               // Create a Queue to hold one or more messages.
               Queue messageQueue = new Queue();
 
               // Add our message to the Queue
               messageQueue.Enqueue( sMessage );
             
               // Add our message queue to the hash table. Use our page reference
               // (IHttpHandler) as the key.
               m_executingPages.Add( HttpContext.Current.Handler, messageQueue );
 
               // Wire up Unload event so that we can inject some JavaScript for the alerts.
               executingPage.Unload += new EventHandler( ExecutingPage_Unload );
            }  
         }
         else
         {
            // If were here then the method has allready been called from the executing Page.
            // We have allready created a message queue and stored a reference to it in our hastable.
            Queue queue = (Queue) m_executingPages[ HttpContext.Current.Handler ];
             
            // Add our message to the Queue
            queue.Enqueue( sMessage );
         }
      }
 
 
      // Our page has finished rendering so lets output the JavaScript to produce the alert's
      private static void ExecutingPage_Unload(object sender, EventArgs e)
      {
         // Get our message queue from the hashtable
         Queue queue = (Queue) m_executingPages[ HttpContext.Current.Handler ];
             
         if( queue != null )
         {
            StringBuilder sb = new StringBuilder();
 
            // How many messages have been registered?
            int iMsgCount = queue.Count;
 
            // Use StringBuilder to build up our client slide JavaScript.
            sb.Append( "<script language='javascript'>" );
 
            // Loop round registered messages
            string sMsg;
            while( iMsgCount-- > 0 )
            {
               sMsg = (string) queue.Dequeue();
               sMsg = sMsg.Replace( "\n", "\\n" );
               sMsg = sMsg.Replace( "\"", "'" );
               sb.Append( @"alert( """ + sMsg + @""" );" );
            }
 
            // Close our JS
            sb.Append( @"</script>" );
 
            // Were done, so remove our page reference from the hashtable
            m_executingPages.Remove( HttpContext.Current.Handler );
 
            // Write the JavaScript to the end of the response stream.
            HttpContext.Current.Response.Write( sb.ToString() );
         }
      }
   }
}

  

posted @   ®Geovin Du Dream Park™  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示