asp.net clientid unique-id

C#asp.net ¿Por qué hay una diferencia entre ClientID y UniqueID?



unique-id (2)

this.UniqueID es el nombre del control añadido con todos los contenedores de nombres, piense en él como el nombre de control completo. this.ClientID es el valor que aparecerá en el atributo id del control, es una traducción del uniqueid para que sea una etiqueta id (compatible con html) (los guiones bajos no son realmente compatibles con html).

Sé que ClientID se usa para javascript y UniqueId para el lado del servidor y que ClientID usa un guión bajo (_) y UniqueId usa un signo de dólar ($) en asp.net 2.0. Pero lo que no entiendo es por qué usar dos ID diferentes. ¿Por qué no es posible simplemente O usar el guión bajo O usar el signo de dólar tanto en el lado del servidor como del cliente? ¿Alguien puede explicar esto?


(Además de mi respuesta original arriba)

Bueno, como probablemente sepa, UniqueID se usa con el atributo name y ClientId con el atributo id de la etiqueta HTML representada. UniqueID utiliza dos puntos como separador. Por otro lado, ClientId usa el subrayado como separador, porque los dos puntos no están permitidos en los nombres de variables de JavaScript. ClientID también es único en la página como UniqueID, pero ClientID está dirigido al procesamiento del lado del cliente y UniqueID para el servidor (bastante obvio), este último especialmente para enrutar datos y eventos de devolución de datos con controles compuestos

Sin embargo, creo que algún razonamiento podría ser que el uso de subrayado como separador en las ID de control normales es un comportamiento bastante común y, por lo tanto, el subrayado no se puede usar en UniqueID como separador de control (si en teoría pensáramos administrar con una propiedad), porque no se pudo hacer Distinción entre controles. Por otro lado, por el mismo razonamiento, no puede utilizar dos puntos en las ID de control, Page Framework no lo permite, por lo que se asegura de que los dos puntos no puedan acceder a los ID de cliente (esto se debió a que a JavaScript no le gusta) .

Y por estas razones, los dos puntos son una buena opción para ser usados ​​en UniqueID, porque el método FindControl puede usarlo para navegar por el árbol de control y ubicar los controles (puede dividir fácilmente el UniqueID).