web-dev-qa-db-fra.com

JavaScript: Alert.Show (message) à partir de code-behind ASP.NET

Je lis ceci JavaScript: Alert.Show (message) De ASP.NET Code-behind

J'essaye de mettre en application la même chose. J'ai donc créé une classe statique comme celle-ci:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Text;
using System.Web.UI;

namespace Registration.DataAccess
{
    public static class Repository
    {
        /// <summary> 
        /// Shows a client-side JavaScript alert in the browser. 
        /// </summary> 
        /// <param name="message">The message to appear in the alert.</param> 
        public static void Show(string message) 
            { 
               // Cleans the message to allow single quotation marks 
               string cleanMessage = message.Replace("'", "\'"); 
               string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

               // Gets the executing web page 
               Page page = HttpContext.Current.CurrentHandler as Page; 

               // Checks if the handler is a Page and that the script isn't allready on the Page 
               if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
               { 
                 page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 
               } 
            } 
    }
}

Sur cette ligne:

string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

Il me montre l'erreur: ; Attendu

Et aussi sur

page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 

Err: Le nom du type ou de l'espace de noms 'Alert' est introuvable (vous manque une directive using ou une référence Assembly?)

Qu'est-ce que je fais mal ici?

51
RG-3

Voici un moyen facile:

Response.Write("<script>alert('Hello');</script>");
107
Muhammad Akhtar
string script = string.Format("alert('{0}');", cleanMessage);
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
{
    page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
}
22
cem

Ce message affiche le message d'alerte directement

ScriptManager.RegisterStartupScript(this,GetType(),"showalert","alert('Only alert Message');",true);

Ce message affiche un message d'alerte de la fonction JavaScript

ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "Showalert();", true);

Ce sont deux façons d'afficher des messages d'alerte dans le code c # derrière

18
user2561316

si vous utilisez ScriptManager sur la page, vous pouvez également essayer d'utiliser ceci:

System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Your Message');", true);
9
Andrusho

Essayez cette méthode:

public static void Show(string message) 
{                
    string cleanMessage = message.Replace("'", "\'");                               
    Page page = HttpContext.Current.CurrentHandler as Page; 
    string script = string.Format("alert('{0}');", cleanMessage);
    if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) 
    {
        page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
    } 
} 

En Vb.Net

Public Sub Show(message As String)
    Dim cleanMessage As String = message.Replace("'", "\'")
    Dim page As Page = HttpContext.Current.CurrentHandler
    Dim script As String = String.Format("alert('{0}');", cleanMessage)
    If (page IsNot Nothing And Not page.ClientScript.IsClientScriptBlockRegistered("alert")) Then
        page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, True) ' /* addScriptTags */
    End If
End Sub
5
Xtian11
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('ID Exists ')</script>");
4
Ahmad lahham

Il pourrait y avoir plus d'une raison pour ne pas travailler.

1: Appelez-vous votre fonction correctement? c'est à dire.

Repository.Show("Your alert message");

2: essayez d’utiliser la méthode RegisterStartUpScript au lieu de scriptblock.

3: Si vous utilisez UpdatePanel, cela pourrait également être un problème.

Vérifier this (topic 3.2)

4
gbs

Votre code ne compile pas. La chaîne que vous avez se termine de manière inattendue;

string script = "<script type=";

C'est effectivement ce que vous avez écrit. Vous devez échapper à vos guillemets doubles:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

Ce genre de chose devrait être douloureusement évident puisque la coloration de votre code source doit être complètement détruite.

4
Tejs

Essayez ceci si vous souhaitez afficher la boîte d’alerte pour qu’elle apparaisse sur la même page, sans affichage sur une page vierge.

ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Sorry there are no attachments');", true);
3
jithin john

Et je pense que la ligne:

string cleanMessage = message.Replace("'", "\'"); 

ne fonctionne pas, il doit être:

string cleanMessage = message.Replace("'", "\\\'");

Vous devez masquer le \ avec un \ et le ' avec un autre \.

3
Kirsten

appelant une fonction JavaScript depuis le code derrière

Étape 1 Ajoutez votre code Javascript

<script type="text/javascript" language="javascript">
    function Func() {
        alert("hello!")
    }
</script>

Étape 2 Ajoutez 1 Gestionnaire de script dans votre formulaire Web et ajoutez 1 bouton aussi

Étape 3 Ajoutez ce code à votre événement de clic sur un bouton

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);
3
Orlando Herrera
string script = string.Format("alert('{0}');", cleanMessage);     
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key_name", script );", true);
2
Nick Kahn

Vous devez corriger cette ligne:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>"; 

Et aussi celui-ci:

RegisterClientScriptBlock("alert", script); //lose the typeof thing
2
Adrian Carneiro

Fonctionne à 100% sans aucun problème et ne redirige pas vers une autre page ... J'ai juste essayé de copier ceci et de changer votre message

// Initialize a string and write Your message it will work
string message = "Helloq World";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("alert('");
sb.Append(message);
sb.Append("');");
ClientScript.RegisterOnSubmitStatement(this.GetType(), "alert", sb.ToString());
2
Attaullah Khan

L'appel de script uniquement ne peut pas le faire si l'événement est spécialement un événement PAGE LOAD.

vous devez appeler Response.Write (script);

comme ci-dessus, string script = "alert ('" + cleanMessage + "');"; Response.Write (script);

fonctionnera au moins pour un événement de chargement de page à coup sûr.

1
Edwin b

vous pouvez utiliser le code suivant.

 StringBuilder strScript = new StringBuilder();
 strScript.Append("alert('your Message goes here');");
 Page.ClientScript.RegisterStartupScript(this.GetType(),"Script", strScript.ToString(), true);
1
Tabish Usman
string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>"; 

Vous devez utiliser string.Format dans ce cas. C'est un meilleur style de codage. Pour vous ce serait:

string script = string.Format(@"<script type='text/javascript'>alert('{0}');</script>");

Notez également que lorsque vous devez échapper au symbole "ou utilisez plutôt un apostroph.

1
Jack Spektor

Les guillemets autour de type = "text/javascript" mettent fin à votre chaîne avant de vouloir. Utilisez des guillemets simples à l'intérieur pour éviter ce problème.

Utilisez ceci

 type = 'text/javascript'
1
R Kitty
private void MessageBox(string msg)
{
    Label lbl = new Label();
    lbl.Text  = string.Format(@"<script type='text/javascript'>alert('{0}');</script>",msg);
    Page.Controls.Add(lbl);
}
1
Silvio Marino

essayer:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
1
Carlos M

si vous voulez masser votre code derrière le fichier, essayez ceci

string popupScript = "<script language=JavaScript>";
popupScript += "alert('Your Massage');";

popupScript += "</";
popupScript += "script>";
Page.RegisterStartupScript("PopupScript", popupScript);
1
Deepak Kushwaha

Vous devez échapper vos citations (Consultez la section "Caractères spéciaux"). Vous pouvez le faire en ajoutant une barre oblique devant eux:

string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
  Response.Write(script);
1
user2389005

J'utilise ceci et cela fonctionne, tant que la page n'est pas redirigée par la suite. Ce serait bien de l'afficher et d'attendre que l'utilisateur clique sur OK, quelles que soient les redirections.

/// <summary>
/// A JavaScript alert class
/// </summary>
public static class webMessageBox
{

/// <summary>
/// Shows a client-side JavaScript alert in the browser.
/// </summary>
/// <param name="message">The message to appear in the alert.</param>
    public static void Show(string message)
    {
       // Cleans the message to allow single quotation marks
       string cleanMessage = message.Replace("'", "\\'");
       string wsScript = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";

       // Gets the executing web page
       Page page = HttpContext.Current.CurrentHandler as Page;

       // Checks if the handler is a Page and that the script isn't allready on the Page
       if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
       {
           //ClientScript.RegisterStartupScript(this.GetType(), "MessageBox", wsScript, true);
           page.ClientScript.RegisterClientScriptBlock(typeof(webMessageBox), "alert", wsScript, false);
       }
    }    
}
1
Fandango68

Vous pouvez utiliser cette méthode après avoir envoyé le code côté client en tant que paramètre de chaîne.

NOTE: Je n'ai pas trouvé cette solution, mais je l'ai trouvée quand je cherchais un moyen de le faire moi-même. seulement édité un peu.

Il est très simple et utile, et peut l’utiliser pour exécuter plus d’une ligne de javascript/jquery/... etc ou n’importe quel code côté client.

private void MessageBox(string msg)
{
    Label lbl = new Label();
    lbl.Text = "<script language='javascript'>" + msg + "')</script>";
    Page.Controls.Add(lbl);
}

source: https://stackoverflow.com/a/9365713/824068

1
M009
 <!--Java Script to hide alert message after few second -->
    <script type="text/javascript">
        function HideLabel() {
            var seconds = 5;
            setTimeout(function () {
                document.getElementById("<%=divStatusMsg.ClientID %>").style.display = "none";
            }, seconds * 1000);
        };
    </script>
    <!--Java Script to hide alert message after few second -->
0
JIYAUL MUSTAPHA