sábado, 14 de setembro de 2013

Enviando Mensagem (MensageBox) no ASP.NET

Quando estamos iniciando no desenvolvimento Web (vindo do form), deparamos com um pequeno equivoco, como enviar uma mensagem para o usuário? Para isso precisamos do nosso bom e velho amigo JavaScript. Vou mostrar abaixo duas opções:


1º Opção: Dentro de um evento Clique de um botão adicione o seguinte código:
Page.RegisterStartupScript("Titulo", "<script> window.alert("Mensagem"); </script>");

2º Opção: Encontrei uma Class na web (já tem um tempo) e temos a possibilidade de enviar uma mensagem ao usuário, segue exemplo da class:
WebMesgBox.cs
using System;
using Microsoft.VisualBasic;
using System.Text;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Info.WebMesg
{
    public class WebMsgBox
    {
        protected static Hashtable handlerPages = new Hashtable();
        private WebMsgBox()
        {
        }

        public static void Show(string Message)
        {
            if (!(handlerPages.Contains(HttpContext.Current.Handler)))
            {
                Page currentPage = (Page)HttpContext.Current.Handler;
                if (!((currentPage == null)))
                {
                    Queue messageQueue = new Queue();
                    messageQueue.Enqueue(Message);
                    handlerPages.Add(HttpContext.Current.Handler, messageQueue);
                    currentPage.Unload += new EventHandler(CurrentPageUnload);
                }
            }
            else
            {
                Queue queue = ((Queue)(handlerPages[HttpContext.Current.Handler]));
                queue.Enqueue(Message);
            }
        }

        private static void CurrentPageUnload(object sender, EventArgs e)
        {
            Queue queue = ((Queue)(handlerPages[HttpContext.Current.Handler]));
            if (queue != null)
            {
                StringBuilder builder = new StringBuilder();
                int iMsgCount = queue.Count;
                builder.Append("<script language="javascript">");
                string sMsg;
                while ((iMsgCount > 0))
                {
                    iMsgCount = iMsgCount - 1;
                    sMsg = System.Convert.ToString(queue.Dequeue());
                    sMsg = sMsg.Replace(""", """);
                    builder.Append("alert( "" + sMsg + "" );");
                }
                builder.Append("</script>");
                handlerPages.Remove(HttpContext.Current.Handler);
                HttpContext.Current.Response.Write(builder.ToString());
            }
        }
    }
}

Bons, estudos

0 comentários:

Postar um comentário