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?
Voici un moyen facile:
Response.Write("<script>alert('Hello');</script>");
string script = string.Format("alert('{0}');", cleanMessage);
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
}
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
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);
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
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('ID Exists ')</script>");
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)
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.
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);
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 \
.
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);
string script = string.Format("alert('{0}');", cleanMessage);
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key_name", script );", true);
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
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());
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.
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);
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.
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'
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);
}
essayer:
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
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);
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);
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);
}
}
}
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);
}
<!--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 -->