ASP.NET: Controalele Web au un ID, un ClientID si un UniqueID. Care e diferenta dintre ele? Si mai ales, care e scopul lor?
Raspunsul e simplu. Motivul pentru care au controalele web au 3 tipuri de id-uri este unicitatea.
Sa luam un exemplu. Sa spunem ca avem un Repeater in care un itemtemplate contine un textbox si un label. Sa dam si cate un nume acestor doua controale. Sa spunem ca label-ul se numeste "lbl_name" iar textboxul se numeste "txt_quantity". Daca repeater-ul contine mai multe astfel de itemuri, va veti afla in situatia in care mai multe elemente html vor avea acelasi numeIar acest lucru e o problema!
Aici intervine acest UniqueID. Cand un control este creat un id unic este generat pe baza ierarhiei de controale. In cazul nostru , label-ul de exemplu va avea ca si id unic ceva de genul urmator "IdRepeater$lbl_name". Acest UniqueID se construieste pe baza numelui controlului nostru si cel al parintelui sau, separate prin semnul "$". Acest lucru asigura doar unicitatea insa nu este foarte convenabil in a fi folosit. In ajutorul nostru vine insa acest ClientID inlocuind acest separator "$" cu unul valid cum underscore-ul. In acest caz pentru labelul nostru ClientID-ul va arata astfel : "IdRepeater_lblName". Ca urmare a acestui lucru cand label-ul nostru este randat campul ID va contine de fapt valoarea lui ClientID.
Daca doriti sa accesati controlul prin intermediul unui javascript, nu folositi ID-ul si nici UniqueID-ul. Folositi in schimb ClientID-ul.
ConfirmButton.Attributes.Add("OnClick","javascript: alert('The username textbox as a value of " + Username.ClientID + "')";