Go4Expert (http://www.go4expert.com/)
-   ASP.NET (http://www.go4expert.com/articles/asp-net-tutorials/)
-   -   Building a Message Box Class in ASP.NET 2.0 (http://www.go4expert.com/articles/building-message-box-class-aspnet-20-t19325/)

naimish 7Sep2009 07:36

Building a Message Box Class in ASP.NET 2.0


Quite Often, We may wish to inform the user of a successful or an unsuccessful operation in a web form application. An effective way to communicate an important message to the user is through the use a MessageBox or a JavaScript "alert".

The MessageBox class in the System.Windows.Forms namespace is usable only from Windows Forms and NOT ASP.NET Web Forms. In order to alert the user we need to add some client side code into the HTML page. This is a simple task but can become quite annoying if this functionality is required on a regular basis.


Hence, It would be nice if we could simply call a static method from any page that would deal with the client side JavaScript required to display the alert's.

This reusable asset explains about a small MessageBox class with a static Show();
method. This Class can be included in the Project and can be used by simply calling the Show method for displaying a Message Box.

The code



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;
namespace Message
        /// <summary>
        /// Summary description for MessageBox.
        /// </summary>
        public class MessageBox
                private static Hashtable m_executingPages = new Hashtable();
                public MessageBox()
                        // TODO: Add constructor logic here
                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 );
                                // 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() );

Thanks :)

jimh 16Sep2009 14:07

Re: Building a Message Box Class in ASP.NET 2.0

Thanks for allowing me to be a part of this forum. I look forward to becoming an active member.


naimish 16Sep2009 14:14

Re: Building a Message Box Class in ASP.NET 2.0
Thanks to shabbir buddy, He's the one :D

divengrabber 21Sep2009 22:36

Re: Building a Message Box Class in ASP.NET 2.0
thanks for saving my time. I wast lots of time while doing this.

michaelsm 23Sep2009 16:49

Re: Building a Message Box Class in ASP.NET 2.0
Thankyou very much.

shabbir 3Oct2009 17:07

Re: Building a Message Box Class in ASP.NET 2.0
Nomination for Article of the month - Sep 2009 Started. Nominate this article.

laxsacon 5Oct2009 12:58

Re: Building a Message Box Class in ASP.NET 2.0
I was registered at your forum. I have printed the test message. Do not delete, please.

rasd123 6Nov2009 06:33

Re: Building a Message Box Class in ASP.NET 2.0
Thanks to share this information.

joshuab 13Nov2009 15:18

Re: Building a Message Box Class in ASP.NET 2.0
Hi naimish..

Thanks for your Information...
I have been looking for this answer.

technica 24Dec2009 14:13

Re: Building a Message Box Class in ASP.NET 2.0
good article. I am going to use this in one of our projects. Thanks for sharing it.

All times are GMT +5.5. The time now is 05:21.