2009-12-07 9 views
0

Comment afficher la boîte de message dans la page de contenu ..? Après la mise à jour du profil .. Je veux afficher une boîte de message dans la page de contenu ..Boîte de message dans ASP.NET

S'il vous plaît donner vos suggestions .. Merci d'avance.

Répondre

0

L'erreur que vous voyez est causée par votre page de contenu en quelque sorte d'essayer d'injecter le javascript pour créer la zone d'alerte en dehors du contrôle de contenu.

Une façon de faire cela devrait fonctionner est d'injecter le javascript au niveau de la page maître.

Pour ce faire, exposer une méthode que vous maîtrisez le code de la page behing comme ce qui suit:

public void ShowAlertMessage(String message) 
{ 
    string alertScript = String.Format("<Script Language='javascript'> alert('{0}');</script>", message); 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "Key", alertScript, false);    
} 

Puis, à partir de la page de contenu que vous pouvez appeler cette méthode sur l'objet principal:

protected void UpdateProfile_Click(object sender, EventArgs e) 
{ 
    YourMasterPage master = (YourMasterPage) Master; 
    master.ShowMessage("Profile updated."); 
} 

Cette méthode a également l'avantage d'encapsuler votre logique MessageBox pour toutes vos pages de contenu.


Une mise en garde sur ce qui précède est que je ne peux pas pour la vie de me reproduire l'erreur que vous voyez, je l'ai essayé toutes les combinaisons de maître/balisage de contenu que je peux penser et ne peut pas obtenir l'erreur. Tous les autres exemples fournis ici dans les autres réponses fonctionnent heureusement pour moi.

0
Response.Write("[script] alert('message here');[/script]"); 

stackoverflow ne permettra pas les balises réelles remplacer le [avec < et] avec>

+1

Si i Utilisez la balise de script au sein de la méthode Response.write dans la page de contenu de la page principale .. il montre l'erreur "Seuls les contrôles de contenu sont autorisés directement dans une page de contenu qui contient des contrôles de contenu." –

+0

@DevelopingChris - Je n'ai jamais eu de problème pour mettre de vraies balises dans ... – Damovisa

2

Vous pouvez utiliser la méthode Page.RegisterStartupScript.

if (UpdateProfile()) 
    Page.RegisterStartupScript("startup", "<script>alert('your profile has been updated..');</script>"); 

En supposant bien sûr que UpdateProfile() effectue le travail et retourne un booléen indiquant le succès :)

alternative (car cette méthode est obsolète), vous pouvez utiliser la méthode ClientScriptManager.RegisterStartupScript à la place.

if (UpdateProfile()) 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "startup", "<script>alert('your profile has been updated..');</script>", false); 
+0

yup vous pouvez utiliser exécuter tout javascript en fournissant le nom de la fonction ou le script et si vous n'avez aucune raison spécifique pourquoi ne pas afficher le message sur la page elle-même au lieu de "alert()". –

+0

Cela fonctionne aussi, j'allais pour la chose la plus simple, c'est plus correct dans une page maître. Je ne sais pas ce qui s'est passé avec les balises de script, mais ils ont été mangés quand j'ai fait un aperçu. – DevelopingChris

+0

@DevelopingChris - bizarre! – Damovisa

1

écrire cette première méthode

public void MsgBox(String ex, Page pg,Object obj) 
    { 
     string s = "<SCRIPT language='javascript'>alert('" + ex.Replace("\r\n", "\\n").Replace("'", "") + "'); </SCRIPT>"; 
     Type cstype = obj.GetType(); 
     ClientScriptManager cs = pg.ClientScript; 
     cs.RegisterClientScriptBlock(cstype, s, s.ToString()); 
    } 

après chaque fois que vous avez besoin boîte de message il suffit de suivre cette ligne

MsgBox("Your Message!!!", this.Page, this); 
Questions connexes