Recomendaría la refacturación de su código para que toda la lógica JS común se almacene en un solo lugar, no en cada UserControl. Esto reducirá el tamaño de su página por un buen margen.
Puede pasar la identificación de UserControl a los métodos comunes de JS para diferenciar entre UserControls.
Por la cuestión de limitar el alcance de su variable 'UserControl', podría almacenar algún tipo de estructura clave/valor para mantener su valor específico de UserControl - la clave sería la ID del cliente UserControl, y el valor sería la variable que te interesa
Por ejemplo:
var UCFlags = new Object();
//set the flag for UserControl1:
UCFlags["UC1"] = true;
//set the flag for UserControl2:
UCFlags["UC2"] = false;
Para acceder a ellos, sólo tiene que pasar el ClientID del control de usuario en el que la matriz UCFlags:
myFlag = UCFlags["UC1"];
En el lado del servidor, puede reemplazar la constante cuerdas "UC1" o "UC2" con
<%= this.ClientID %>
así:
myFlag = UCFlags["<%= this.ClientID %>"];
Puede seguir utilizando la sintaxis <% = this.ClientID%> aquí aunque la mayor parte de JS se encuentre en un archivo separado; simplemente configure
UCFlags["<%= this.ClientID %>"] = value;
antes de la llamada para incrustar el archivo JS.
Ryan: puedo tener cualquier número de controles de usuario en la página. Por lo tanto, no puedo crear la matriz de UCFlags de manera determinista. UCFlags ["UC1"] = verdadero; UCFlags ["UC2"] = falso; .. .. .. UCFlags ["UCn"] = falso; –
@Bob: lo entiendo, pero con este método no necesita saber qué UC y cuántas UCS hay, simplemente diciendo UCFlags ["<% = this.ClientID%>"] = true creará una propiedad (dot ClientID) en el objeto UCFlags e inicializar el valor a 'verdadero'. –
Ah, veo que estás usando tablas hash en javascript. Parecía una matriz la primera vez que lo vi :) Gracias –