2010-08-10 3 views
4

Je veux alerter 1 enregistrer les scripts dans cet ordreComment commander des scripts enregistrés par le Registre Script ScriptManager

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "a", "alert(a);", true); 
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "b", "var a = 1;", true); 

Mais faire cela provoque une erreur indiquant un est indéfini.

J'ai différents contrôles situés dans différentes parties de la page d'inscription des scripts, et certains d'entre eux doivent aller en premier et d'autres doivent aller en dernier.

Existe-t-il un moyen de définir l'ordre de rendu?

Répondre

3

Non, il n'est pas possible de définir l'ordre dans lequel les méthodes RegisterClientScriptBlock sont appelées. De la documentation pour la méthode ScriptManager.RegisterClientScriptBlock (Souligné par):

Les blocs de script ne sont pas garantis être sortie dans l'ordre où ils sont enregistrés . Si l'ordre du script blocs est important, utiliser un objet StringBuilder pour recueillir les scripts ensemble dans une seule chaîne, puis tous les enregistrer dans un seul bloc de script client .

En outre, vous pouvez définir une clé différente (deuxième paramètre, "a") pour la deuxième invocation de RegisterStartupScriptBlock, depuis un script enregistré est identifié de manière unique par sa clé. Si vous appelez cette méthode avec vos paramètres, ScriptManager n'enregistrera pas le second script, car un autre script avec la même clé ( "a") a déjà été enregistré.

+0

La touche 'a' était une erreur de copier-coller, corrigée. Merci. – BrunoLM

+0

@BrunoLM De rien –

Questions connexes