ASP.NET Cuadro de Mensajes de la Aplicación Web


En un asp.net aplicación windows forms, en el código C# detrás puede usar:

MessageBox.Show("Here is my message");

¿Hay algún equivalente en un asp.net ¿aplicación web? ¿Puedo llamar a algo desde el código C# detrás que mostrará un cuadro de mensaje al usuario?

Ejemplo de uso de esto: Tengo un botón que carga un archivo en el código detrás. Cuando se carga el archivo o si hay un error, me gustaría mostrar un mensaje al usuario indicando el resultado.

¿Alguna idea al respecto?

Author: Baxter, 2012-03-15

13 answers

Desea utilizar una Alerta. Desafortunadamente no es tan agradable como con Windows Forms.

ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + myStringVariable + "');", true);

Similar a esta pregunta aquí: http://forums.asp.net/t/1461308.aspx/1

 60
Author: Gage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-15 12:59:14

O cree un método como este en su solución:

public static class MessageBox {
    public static void Show(this Page Page, String Message) {
       Page.ClientScript.RegisterStartupScript(
          Page.GetType(),
          "MessageBox",
          "<script language='javascript'>alert('" + Message + "');</script>"
       );
    }
}

Entonces puedes usarlo como:

MessageBox.Show("Here is my message");
 13
Author: Ali Humayun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-17 20:45:49

Solo para los registros.

Aquí está un enlace de Microsoft que creo que es la mejor manera de presentar un MessageBox{[15] {} en[14]}ASP.Net

También presenta opciones como y NO.

Instrucciones sobre cómo obtener la clase desde el enlace trabajando en tu proyecto:

  1. Si no tienes una carpeta App_Code en tu proyecto, créala.
  2. Haga clic derecho en el App_Code carpeta y crear una clase. Nombre MessageBox.cs
  3. Copie el texto de la MessageBox.cs file (del código adjunto) y péguelo en su MessageBox.archivo cs.
  4. Haga lo mismo que los pasos 2 y 3 para el MessageBoxCore.archivo cs.
  5. Importante:Haga clic derecho en cada archivo MessageBox.cs y MessageBoxCore.cs y asegúrese de que la 'Build Action' esté establecida en Compilar
  6. Agregue este código a su página aspx donde desea mostrar el cuadro de mensaje:

    <asp:Literal ID="PopupBox" runat="server"></asp:Literal>
    
  7. Añadir este código en usted cs página donde desea que se tome la decisión:

    string title = "My box title goes here";
    string text = "Do you want to Update this record?";
    MessageBox messageBox = new MessageBox(text, title, MessageBox.MessageBoxIcons.Question, MessageBox.MessageBoxButtons.YesOrNo, MessageBox.MessageBoxStyle.StyleA);
    messageBox.SuccessEvent.Add("YesModClick");
    PopupBox.Text = messageBox.Show(this);
    
  8. Agregue este método a su página cs. Esto es lo que se ejecutará cuando el usuario haga clic en Sí. No es necesario hacer otro para el método NoClick.

    [WebMethod]
    public static string YesModClick(object sender, EventArgs e)
    {
        string strToRtn = "";
        // The code that you want to execute when the user clicked yes goes here
        return strToRtn;
    }
    
  9. Añádase un WebUserControl1.ascx archivo a su ruta raíz y agregue este código al archivo:

    <link href="~/Styles/MessageBox.css" rel="stylesheet" type="text/css" />
    <div id="result"></div>
    <asp:ScriptManager runat="server" ID="scriptManager" EnablePageMethods="True">
    </asp:ScriptManager>  //<-- Make sure you only have one ScriptManager on your aspx page.  Remove the one on your aspx page if you already have one.
    
  10. Agregue esta línea encima de su aspx página:

    <%@ Register src="~/MessageBoxUserControl.ascx" tagname="MessageBoxUserControl" tagprefix="uc1" %>
    
  11. Agregue esta línea dentro de su página aspx (Dentro de su etiqueta asp:Content si tiene una)

    <uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
    
  12. Guarde los archivos de imagen 1.jpg, 2.jpg, 3.jpg, 4.jpg del Microsoft project anterior en su ruta ~/Images/.

  13. Hecho

Espero que ayudar.

Pablo

 9
Author: Pabinator,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-18 22:26:00

Hay varias opciones para crear un messagebox del lado del cliente en ASP.NET -ver aquí, aquí y aquí por ejemplo...

 3
Author: Yahia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-15 12:59:38

En realidad no. El código del lado del servidor está sucediendo en el servidor - - - puede usar javascript para mostrar algo al usuario en el lado del cliente, pero obviamente solo se ejecutará en el lado del cliente. Esta es la naturaleza de una tecnología web cliente-servidor. Básicamente estás desconectado del servidor cuando recibes tu respuesta.

 2
Author: ek_ny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-15 12:59:13

¿por Qué no debería usar jquery popup para este propósito.Utilizo bpopup para este propósito.Ver más sobre esto.
http://dinbror.dk/bpopup /

 2
Author: Shree,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-15 13:00:46

Hay algunas soluciones; si se siente cómodo con CSS, aquí hay una solución muy flexible:

Cree un Panel con un estilo apropiado que se asemeje a un "Cuadro de mensaje", ponga un Label en él y establezca su propiedad Visible en false. Luego, cuando el usuario necesite ver un mensaje después de un postback (por ejemplo, presionando un botón), desde codebehind establezca la propiedad Label s Text en el mensaje de error deseado y establezca la propiedad Panel's Visible en true.

 1
Author: Saeb Amini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-15 13:11:34

"ASP.net MessageBox

' Añadir un scriptmanager a la ASP.Net Página

<asp:scriptmanager id="ScriptManager1" runat="server" />

Intenta:

{

  string sMsg = "My Message";

  ScriptManager.RegisterStartupScript(Page, Page.GetType, Guid.NewGuid().ToString(), "alert('" + sMsg + "')", true);

}
 1
Author: Howard Rothenburg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-27 06:46:39

Como otros ya han señalado, un cuadro de mensaje será Javascript del lado del cliente. Entonces, el problema es cómo forzar un cuadro de mensaje JS del lado del cliente desde el lado del servidor. Una solución simple es incluir esto en el HTML:

<script>
    var data = '<%= JsData %>';
    alert(data);
</script>

Y para llenar esto data desde el código del lado del servidor-detrás:

public partial class PageName : Page
{
    protected string JsData = "your message";

Tenga en cuenta que el valor de la cadena debe ser una cadena Javascript, es decir, una línea, pero puede contener nuevas líneas escapadas como \n.

Ahora puedes usar todo tu Javascript o jQuery habilidades y trucos para hacer lo que quieras con ese texto de mensaje en el lado del cliente, como mostrar un simple alert(), como se muestra en el ejemplo de código anterior, o un sofisticado cuadro de mensaje o banner de mensaje.

(Tenga en cuenta que las ventanas emergentes a veces están mal vistas y bloqueadas)

Tenga en cuenta también que, debido al protocolo HTTP, el mensaje solo se puede mostrar en respuesta a una solicitud HTTP que el usuario envía al servidor. A diferencia de las aplicaciones WinForm, el servidor web no puede enviar un mensaje al cliente cuando le parece bien.

Si desea mostrar el mensaje solo una vez, y no después de que el usuario actualice la página con F5, puede configurar y leer una cookie con código javascript. En cualquier caso, el punto bueno con este método es que es una manera fácil de obtener datos del servidor al javascript en el cliente, y que puede usar todas las características de javascript para lograr lo que desee.

 1
Author: Roland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-30 10:23:43

Si se incluye

System.Windows.forms

Como espacio de nombres, entonces entrará en conflicto . Use

btn_click()
{

System.Windows.Forms.MessageBox.Show("Hello");

}
 -1
Author: user2678089,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-13 10:19:45

Necesita hacer referencia al espacio de nombres


using System.Windows.Form;

Y luego añadir el código

protected void Button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(" Hi....");

    }
 -1
Author: user4272864,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-20 05:21:49

Haga clic derecho en el explorador de soluciones y elija el cuadro de diálogo agregar reference.one aparecerá. En eso seleccione (.net)-> System.windows.form. Importa System.Windows.Forms (vb) y usando System.windows.forms(C#) copie esto en su codificación y luego escriba messagebox.show("").

 -2
Author: anu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-31 05:58:10

Simplemente agregue el espacio de nombres:

System.Windows.forms 

A su referencia de aplicación web o lo que sea, y usted tiene el acceso a su:

MessageBox.Show("Here is my message");

Lo probé y funcionó.

Buena suerte.

 -3
Author: arakami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-09 20:41:45