web-dev-qa-db-fra.com

Boîte de message d'application Web ASP.NET

Dans une application de formulaires Windows asp.net, dans le code C # suivant, vous pouvez utiliser:

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

Existe-t-il un équivalent dans une application Web asp.net? Puis-je appeler quelque chose à partir du code C # situé derrière qui affichera une boîte de message à l'utilisateur?

Exemple d'utilisation de ceci: J'ai un bouton qui charge un fichier dans le code situé derrière. Lorsque le fichier est chargé ou s’il ya une erreur, je souhaite faire apparaître un message à l’utilisateur indiquant le résultat.

Des idées à ce sujet?

31
Baxter

Vous voulez utiliser une alerte. Malheureusement, ce n'est pas aussi bien qu'avec Windows Forms.

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

Semblable à cette question ici: http://forums.asp.net/t/1461308.aspx/1

64
Gage

Ou créez une méthode comme celle-ci dans votre solution:

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>"
       );
    }
}

Ensuite, vous pouvez l'utiliser comme:

MessageBox.Show("Here is my message");
15
Ali Humayun

Juste pour les enregistrements.

Voici un lien de Microsoft que je pense est la meilleure façon de présenter un MessageBox dans ASP.Net

En outre, il présente des choix tels que Oui et [~ # ~] non [~ # ~] .

Instructions sur la façon d’obtenir la classe à partir du lien travaillant sur votre projet:

  1. Si vous n'avez pas de dossier App_Code sur votre projet, créez-le.
  2. Cliquez avec le bouton droit de la souris sur le dossier App_Code et créez un cours. Nommez-le MessageBox.cs
  3. Copiez le texte du fichier MessageBox.cs ( à partir du code joint ) et collez-le dans votre fichier MessageBox.cs.
  4. Procédez de la même manière qu'aux étapes 2 et 3 pour le fichier MessageBoxCore.cs.
  5. Important: Faites un clic droit sur chaque fichier MessageBox.cs et MessageBoxCore.cs et assurez-vous que 'Build Action' est réglé sur Compile
  6. Ajoutez ce code à votre page aspx où vous souhaitez afficher la boîte de message:

    <asp:Literal ID="PopupBox" runat="server"></asp:Literal>
    
  7. Ajoutez ce code sur vous cs la page sur laquelle vous souhaitez prendre une décision:

    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. Ajoutez cette méthode à votre page cs. C'est ce qui sera exécuté lorsque l'utilisateur clique sur Oui. Vous n'avez pas besoin d'en créer un autre pour la méthode 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. Ajoutez un fichier WebUserControl1.ascx à votre chemin racine et ajoutez ce code au fichier:

    <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. Ajoutez cette ligne en haut de votre aspx page:

    <%@ Register src="~/MessageBoxUserControl.ascx" tagname="MessageBoxUserControl" tagprefix="uc1" %>
    
  11. Ajoutez cette ligne dans votre aspx page (dans votre balise asp: Content si vous en avez une)

    <uc1:MessageBoxUserControl ID="MessageBoxUserControl1" runat="server" />
    
  12. Enregistrez les fichiers image 1.jpg, 2.jpg, 3.jpg, 4.jpg du projet Microsoft ci-dessus dans votre ~/Images/ chemin.

  13. Terminé

J'espère que ça aide.

Pablo

10
Pabinator

Il existe plusieurs options pour créer une boîte de messagerie côté client dans ASP.NET - voir ici , ici et ici par exemple ...

3
Yahia

pas vraiment. Le code côté serveur est présent sur le serveur - vous pouvez utiliser javascript pour afficher quelque chose à l'utilisateur côté client, mais il ne sera évidemment exécuté que du côté client. C'est la nature d'une technologie Web client serveur. Vous êtes pratiquement déconnecté du serveur lorsque vous recevez votre réponse.

2
ek_ny

Pourquoi ne pas utiliser jquery popup à cet effet.J'utilise bpopup à cet effet.Voir plus à ce sujet.
http://dinbror.dk/bpopup/

2
Shree

Comme d'autres l'ont déjà souligné, une boîte de message sera javascript côté client. Le problème est donc de savoir comment forcer une boîte de message JS côté client du côté serveur. Une solution simple consiste à l'inclure dans le code HTML:

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

et pour remplir ceci data à partir du code-behind côté serveur:

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

Notez que la valeur de la chaîne doit être une chaîne Javascript, c’est-à-dire une ligne, mais elle peut contenir des retours à la ligne comme \n.

Maintenant, vous pouvez utiliser toutes vos compétences et astuces Javascript ou JQuery pour faire ce que vous voulez avec ce texte de message sur le côté client, comme afficher une simple alert(), comme illustré dans l'exemple de code ci-dessus, ou une boîte de message sophistiquée ou bannière de message.

(Notez que les popups sont parfois mal vu et bloqués)

Notez également qu'en raison du protocole HTTP, le message ne peut être affiché qu'en réponse à une requête HTTP que l'utilisateur envoie au serveur. Contrairement aux applications WinForm, le serveur Web ne peut pas envoyer de message au client à tout moment.

Si vous souhaitez afficher le message une seule fois, et non après que l'utilisateur a actualisé la page avec la touche F5, vous pouvez définir et lire un cookie avec du code javascript. Dans tous les cas, le point de Nice avec cette méthode est qu’il s’agit d’un moyen simple de transférer des données du serveur vers le javascript du client et de pouvoir utiliser toutes les fonctionnalités de javascript pour accomplir tout ce que vous voulez.

1
Roland

Il y a quelques solutions. Si vous êtes à l'aise avec CSS, voici une solution très flexible:

Créez un Panel de style approprié qui ressemble à une "boîte de message", insérez un Label dans celui-ci et définissez sa propriété Visible sur false. Ensuite, chaque fois que l'utilisateur doit voir un message after une publication (par exemple en appuyant sur un bouton), depuis codebehind, définissez la propriété Labels Text sur le message d'erreur souhaité et définissez-la. la propriété PanelVisible à true.

1
Saeb Amini

'ASP.net MessageBox

'Ajouter un gestionnaire de scripts à la page ASP.Net

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

essayer:

{

  string sMsg = "My Message";

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

}
1

Vous devez référencer l'espace de noms


using System.Windows.Form;

puis ajoutez dans le code

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

    }
0
user4272864