Pourquoi cette variable javascript que je crée via C # ne peut être mise à jour qu'une seule fois?

Dans mon code C-code pour une application ASP.Net, j'ai une variable qui est définie et je souhaite définir une variable Javascript qui lui est identique afin que je puisse travailler avec le client. Cette variable C # est définie dans un gestionnaire d'événements et elle change assez souvent assez souvent.

Donc, mon gestionnaire d'événements ne fait que cela …

int scale = (int)myObject.Scale; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JSVariables", "scale=" + scale, true); 

Ensuite, j'ai dans mon JS j'ai le gestionnaire d'événements simplement en alertant la valeur.

 alert(scale); 

Le problème est que la valeur de l'échelle est définie uniquement la première fois que l'événement est déclenché. Je peux passer à travers mon code C # chaque fois que l'événement est levé et voir que RegisterClientScriptBlock est appelé et que l'échelle est en fait obtenir des valeurs différentes.

Comment puis-je obtenir cette valeur pour ne pas être constante? Chaque fois que la ligne RegisterClientScriptBlock est atteinte, une nouvelle valeur devrait être chargée dans ma variable d'échelle JS, mais elle reste simplement comme elle l'était. Des idées?

RegisterClientScriptBlock enregistre votre script par type ( this.GetType() ) et la clé ( "JSVariables" ). La prochaine fois que RegisterClientScriptBlock est appelé dans la même pile d'exécution, il vérifiera si un script pour ce type et cette clé ont déjà été enregistrés et, dans l'affirmative, il ne fera rien.

Le but est d'éliminer les scripts partagés en double. Si cinq de vos contrôles dépendent tous d'un JavaScript partagé, vous souhaitez seulement l'inclure une fois sur la page. Ainsi, tous les contrôles peuvent appeler la même fonction et la clé, et assurez-vous qu'il n'est pas inclus plusieurs fois.

En plus de ce que Rex a dit, si vous utilisez ASP.NET Ajax, vous devrez utiliser les méthodes RegisterClientScript sur ScriptManager si vous souhaitez mettre à jour ces valeurs entre les postbacks partiels, ce qui signifie que vous lisez comme vous le faites.