jump to navigation

MessageBox para ASP.NET 14 enero, 2008

Posted by haegeth in ASP.NET, Herramientas de Internet, Snippets, Visual Studio.NET.
trackback

Al siguiente código no es mio, sino que lo encontré en un sitio hace algún tiempo, prometo investigar el nombre el autor para dar crédito a quien lo merece.

Para poder usar un MessageBox como lo utilizaríamos en una aplicación de escritorio es necesario agregar las siguientes directivas y el siguiente codigo, de esta manera, en nuestro sitio ASP.NET solo invocaremos la clase y método MessageBox.Show(…)  fácil, rápido y sencillo:

Directivas: using System.Collections;

using System.Text;Al final del dódigo de la página en C# agregamos la siguiente clase:

public class MessageBox{

private static Hashtable m_executingPages = new Hashtable();public 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’sprivate 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 messagesstring 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 hashtablem_executingPages.Remove(HttpContext.Current.Handler);// Write the JavaScript to the end of the response stream.

HttpContext.Current.Response.Write(sb.ToString());}}

}

Listo, ojalá les sea tan útil como a mi.

—————————————————————-

Gracias  los comentarios de Horacio, descubri que al hacer copy-paste de éste código al Visual studio algunos caracteres como las comillas dobles cambian…. porqué no se,  no me lo pregunten :-P  pero aqui les pongo un archivo de texto con el código correcto listo para copiar y pegar.

MessageBox para ASP.NET

Comentarios»

1. Horacio - 23 enero, 2008

Hola este codigo es justo lo que estoy necesitando!! lo probe tal y como tu dices, pero no me reconoce ningna de estas partes´

sb.Append(“ ”);// 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 + @””” );”);}

las marca todas con rojo y dice que no reconoce los caracteres, hay alguna cosa extra que haya que hacer? Desde ya muchas gracias y Saludos!!

2. Haegeth - 25 enero, 2008

A caray… pues no Horacio, no hay nada extra o especial que se deba hacer; en mis nuevos proyectos siempre copio ese código tal cual hasta el final de la pagina y utilizo el MessageBox sin problema, pero si me dices que version de Visual Studio estas utilizando te prometo investigar el problema.

3. Horacio Velasco - 31 enero, 2008

Hola Haegeth !! gracias por responder mi comentario.. uso VS 2005 con el framework 2.0 … no te preocupes tal vez deba renegar un rato mas.. siempre es eso… Saludos y que estes bien!!!

4. Haegeth - 1 febrero, 2008

Al contrario, gracias a ti por dejar tus comentarios.
Sigo a tus ordenes

5. Haegeth - 7 febrero, 2008

Horacio, no se si aun te sirva pero ya encontré una posible causa a tu problema, por alguna extraña razón, si haces copy paste del codigo que puse al visual studio las comillas doles y otros caracteres se cambian por otros caracteres parecidos….. en fin el caso es que cambian algunos caracteres por sus primos en la tabla ascii.
Voy a poner un pequeño archivo de texto con el codigo para que facilmente puedan hacer copy-paste del mismo ok?
Gracias por tus comentarios y por visitar mi blog.

6. Horacio - 18 febrero, 2008

Buenas buenas!!! si…el tema de las comillas de una tuve que cambiarlas una por una por que no las reconocia… y te las marcaba con error… de todas formas logre que ya no me marcara mas con error y eso.. pero quede en la misma…capaz sea que le estoy yerrando de comillas… lo del txt seria extremadamente util.. tener cuadros de dialogo de confirmacion etc es lo ultimo que faltaria para que una app web quede igual que una de escritorio… ahora veo si encuentro el txt… Saludos desde AR!!!

7. yo - 5 mayo, 2008
8. kron - 10 mayo, 2008

Hola,

Si de algo sirve creo que el autor de esta clase se encuentra en:
http://www.codeproject.com/KB/webforms/AspNetMsgBox.aspx

9. Mohammad - 26 diciembre, 2012

Hmm it looks like your blog ate my first comment
(it was extremely long) so I guess I’ll just sum it up what I submitted and say, I’m thoroughly enjoying your blog.
I too am an aspiring blog blogger but I’m still new to the whole thing. Do you have any suggestions for first-time blog writers? I’d really appreciate it.

haegeth - 1 enero, 2013

Well, I think the best advice I could offer you is “be yourself”, share your thoughts and feelings to the world and people who thinks as you do will come to you eventually and become your readers. Thanks a lot for your comments🙂

10. http://bing.com - 15 febrero, 2013

“MessageBox para ASP.NET | An Engineer\s Vision” was a wonderful blog, can not
help but wait to look over even more of your posts.
Time to spend numerous time on the web hehe.

I appreciate it -Sima

11. Larue - 20 abril, 2013

Hi I am so delighted I found your blog, I
really found you by mistake, while I was
looking on Bing for something else, Anyways I am here now and would just like to say thanks for
a fantastic post and a all round entertaining blog (I
also love the theme/design), I don’t have time to look over it all at the minute but I have book-marked it and also added your RSS feeds, so when I have time I will be back to read much more, Please do keep up the fantastic work.

12. http://www.muteshi.com/plus/guestbook.php - 27 mayo, 2013

A fascinating discussion is worth comment. I think that you need to publish more about this topic, it might not be a taboo subject but usually folks don’t speak about these subjects. To the next! All the best!!

13. harvwy norman - 3 agosto, 2013

A proper estimate is provided, so that when you begin your search for another
bathroom remodel calculatoring professional.

14. eyesight - 30 noviembre, 2013

I actually wanted to make a brief remark to be able to
say thanks to you for those unique advice you are giving here.

My rather long internet search has at the end been paid with sensible details
to share with my friends and family. I would say that many of us visitors are quite blessed to
dwell in a perfect community with very many perfect people with great
basics. I feel very blessed to have encountered the web page and look forward
to some more fabulous minutes reading here. Thank you once again for everything.

15. Johnd980 - 11 agosto, 2014

You are my breathing in, I possess few blogs and very sporadically run out from to brand. ebcdbefkcfde

16. public adjuster Cherryhill - 3 septiembre, 2014

Thank you, I’ve just been searching for info about
this topic for ages and yours is the best I’ve came upon so
far. But, what about the bottom line? Are you certain in regards to the supply?

17. public adjuster flat iron - 21 septiembre, 2014

Right now it looks like BlogEngine is the preferred blogging platform out there right now.
(from what I’ve read) Is that what you are using on your blog?

18. bruit machine a sous casino - 11 noviembre, 2014

bruit machine a sous casino

MessageBox para ASP.NET | An Engineer\’s Vision


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: