viernes, abril 19, 2024

Control para mensajes estilo MsgBox en ASP.NET

Este código me lo encontré en The Code Project y lo puedes encontrar aquí en su versión completa en inglés.
Message Box & Confirmation Box

Esta aplicación te crea un componente .dll que debe ser agregado a las referencias de nuestro programa ASP.NET.

Importante: No importa el lenguaje de tu aplicación ASP.NET, cuando se importan referencias estas pueden estar en lenguajes diferentes al del programa.

Mensaje de Alerta:

Mensaje de Confirmación:

Primero que todo debes crear un nuevo proyecto Class Library en C#. Luego agregas esta clase a tu proyecto ASP.NET.

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;namespace Mensajes
{
/// <summary>
/// Summary description for WebCustomControl1.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:msgBox runat=server></{0}:msgBox>")]
public class msgBox : System.Web.UI.WebControls.WebControl
{
//private string msg;
private string content;
[Bindable(true),
Category("Appearance"),
DefaultValue("")]

public void alert(string msg)
{
string sMsg = msg.Replace( "n", "\n" );
sMsg = msg.Replace( """, "'" );

StringBuilder sb = new StringBuilder();

sb.Append( @"<script language='javascript'>" );
sb.Append( @"alert( """ + sMsg + @""" );" );
sb.Append( @"</script>" );

content=sb.ToString();
}

//confirmation box
public void confirm(string msg,string hiddenfield_name)
{
string sMsg = msg.Replace( "n", "\n" );
sMsg = msg.Replace( """, "'" );

StringBuilder sb = new StringBuilder();

sb.Append( @"<INPUT type=hidden value='0' name='" +
hiddenfield_name + "'>");

sb.Append( @"<script language='javascript'>" );

sb.Append( @" if(confirm( """ + sMsg + @""" ))" );
sb.Append( @" { ");
sb.Append( "document.forms[0]." + hiddenfield_name + ".value='1';"
+ "document.forms[0].submit(); }" );
sb.Append( @" else { ");
sb.Append("document.forms[0]." + hiddenfield_name + ".value='0'; }" );

sb.Append( @"</script>" );

content=sb.ToString();
}

/// <summary>
/// Render this control to the output parameter specified.
/// </summary>
/// <param name="output"> The HTML writer to write out to </param>
protected override void Render(HtmlTextWriter output)
{
output.Write(this.content);
}
}
}

El siguiente paso será compilar la aplicación, lo cual nos crea el dll que necesitaremos mas adelante.

Ahora en nuestro programa ASP vamos a importar este dll, y luego de hacer esto solo debemos implementarlo de una forma muy sencilla.

En nuestra página .aspx registramos la referencia

[VB.NET]

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="PruebaASPVB.WebForm1"%>
<%@ Register TagPrefix="cc1" Namespace="Mensajes" Assembly="msgBox" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" runat="server"
Width="136px"></asp:TextBox>
<asp:Button id="Button1" runat="server"
Width="96px" Text="Aceptar"></asp:Button>
<cc1:msgBox id="MsgBox1" runat="server"></cc1:msgBox>
</form>
</body>
</HTML>
[C#.NET]

<%@ Register TagPrefix="cc1" Namespace="Mensajes" Assembly="msgBox" %>
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="PruebasASPCS.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<for id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" runat="server"
Width="104px"></asp:TextBox>
<asp:Button id="Button1" runat="server"
Width="96px" Text="Button"></asp:Button>
<cc1:msgBox id="MsgBox1" runat="server"></cc1:msgBox>
</form>
</body>
</HTML>

Luego en la acción del botón llamamos el mensaje que necesitamos.

[VB.NET]

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Hand id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" runat="server"
Width="104px"></asp:TextBox>
<asp:Button id="Button1" runat="server"
Width="96px" Text="Button"></asp:Button>
<cc1:msgBox id="MsgBox1" runat="server"></cc1:msgBox>
</form>
</body>
</HTML>

Luego en la acción del botón llamamos el mensaje que necesitamos.

[VB.NET]

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.TextBox1.Text <> "" Then
MsgBox1.confirm("Usted digitó " & Me.TextBox1.Text, "hid_f")
Else
MsgBox1.alert("Por favor debe digitar en el TextBox")
End If
End Sub

[C#.NET]

private void Button1_Click(object sender, System.EventArgs e)
{
if(TextBox1.Text!=null && TextBox1.Text!="")
MsgBox1.confirm("Usted digitó "+ TextBox1.Text, "hid_f");
else
MsgBox1.alert("Por favor debe digitar en el TextBox");
}

Como ven la misma referencia en C# nos sirve para aplicaciones en diferentes lenguajes.

Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub
Roy Rojas
Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub