web-dev-qa-db-fra.com

Exécuter la fonction javascript après la publication sur asp.net sans Ajax

Je souhaite exécuter une fonction javascript après la publication sur asp.net sans utiliser ajax.

J'ai essayé ce qui suit dans ma méthode même sans succès:

Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);");
23

Vous devriez plutôt utiliser la classe ScriptManager, car la propriété Page.ClientScript est obsolète ...

La classe ClientScriptManager est nouvelle dans ASP.NET 2.0 et remplace les méthodes de classe Page pour la gestion des scripts désormais obsolètes.
Référence: MSDN - Propriété Page.ClientScript

L'avantage de ScriptManager est qu'il fonctionne avec des publications asynchrones. Par conséquent, si vous utilisez AJAX, cela ne fonctionnera pas avec ClientScriptManager.

Votre code ressemblerait à ceci:

ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);", true);

Notez également que si vous utilisez AJAX et avez un morceau de code javascript que vous souhaitez exécuter sur plusieurs publications, vous devez vous reporter à UpdatePanel dans le premier argument, par exemple:

ScriptManager.RegisterStartupScript(MainUpdatePanel, typeof(string), "ShowPopup", "showCheckOutPopIn('Livraison',556);", true);
46
reSPAWNed

Solution

J'avais besoin d'ajouter les balises de script en utilisant la surcharge suivante.

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('Success!');", true);

Trouvé: Re: exécuter javascript après la publication

8

Je ne me souviens pas de façon précise quelle est la syntaxe/l'utilisation exacte du contenu Page.ClientScript ... qui semble fonctionner normalement. Mais si Push vient à l’abîme, n’avez qu’un simple contrôle utilisateur que vous pouvez activer/désactiver dynamiquement et qui va écrire une méthode javascript dans des blocs de script après la publication. Lors du chargement de la page, ce script exécute la fonctionnalité que vous souhaitez exécuter.

bien sûr, la question est alors, qu'est-ce que ce javascript devrait faire que vous ne pouvez pas faire simplement au niveau du serveur via une propriété ou un autre paramètre qui refléterait le balisage?

0
Joel Martinez

Peut-être tard, mais vous pouvez utiliser comme ceci

La page principale :

   ScriptManager.RegisterStartupScript(this, typeof(Page),
            "ShowRegister", string.Format(@"$( document ).ready(function() {{ShowErrorMessage('{0}');}});", message), true);true);

Formulaire Web:

 Page.ClientScript.RegisterClientScriptBlock(GetType(), "MEssage",
                          "$( document ).ready(function() {
ShowMessage('{0}');", true);
0
Alican Kablan

Cette personne a eu le même problème je pense et la solution par lui a travaillé pour moi aussi:

http://forums.asp.net/t/1121450.aspx?HOW+TO+run+javascript+on+each+partial+postback+

Et la solution consiste simplement à utiliser la fonction de classe ScriptManager: ScriptManager.RegisterStartupScript(this, typeof(Sections), "Initialize", "initialize();", true);

0
Dhananjay