هنگام کار با کنترل هاي ASP.NET حتما
متوجه شده ايد که تمام کنترل ها داراي 3 صفت ID و UniqueID و ClientID مي باشند که
هر سه اين صفت ها داراي مقداري منحصر به فرد مي باشند.
شايد اين سوال در ذهن شما
پيش آمده باشد که کاربرد اين سه صفت چيست؟
ID :
با صفت ID همگي آشنايي داريم. اين صفت جهت مقداردهي و دسترسي
به کنترل هاي وب، هنگام برنامه نويسي کارايي دارد.
UniqueID :
براي توضيح عملکرد UniqueID
از يک مثال استفاده مي کنم. فرض کنيد يک کنترل Repeater داريد که داراي
ItemTemplate مي باشد و در داخل اين ItemTemplate يک عدد TextBox داريد که
تعداد محصول خريداري شده و يک کنترل Label داريد که نام محصول خريداري شده را
نگهداري مي کند.
اکنون فرض کنيد يک مشتري 5 نوع محصول مختلف خريداري نموده است.
يعني ItemTemplate ما 5 مرتبه تکرار شده است و ما 5 عدد TextBox و 5 عدد
Label داريم که تعداد محصول هاي خريداري شده و نام هريک را نگهداري مي کنند. مشکل
اينجا به وجود مي آيد که اين TextBox ها داخل Repeater به وجود آمده اند، پس
ما به هر کدام از اينها يک ID منحصر به فرد نداده ايم و داراي نام هاي يکساني مي
شوند پس چگونه بايد به محتواي يک TextBox خاص دسترسي پيدا کنيم؟!
اين مشکل توسط
,UniqueID حل مي شود. اين صفت به طور اتوماتيک توليد شده و باعث تمايز اين TextBox
ها از يکديگر مي شود. پس يکي از کاربردهاي اين صفت در کنترل هايي مانند Repeater و
GridView و Wizard و غيره که داده هاي سلسله مراتبي (hierarchy) توليد مي کنند، مي
باشد.
مقدار صفت UniqueID به طور مثال مي تواند به صورت
"CreateUserWizard1$CreateUserStepContainer$Email" باشد.
همانطور که مي بينيد مقدار
معمولا طولاني مي باشد که تشکيل شده است از نام کنترل هاي والد (Parent) آن، که با
علامت $ از هم مجزا شده اند.
با اين وجود يک مشکل ديگر وجود دارد و آن اين است
که علامت $ در HTML از لحاظ فني يک کاراکتر غير معتبر مي باشد. و
ما اگر بخواهيم از اين صفت در سمت مشتري (Client) استفاده نماييم (معمولا
درجاوااسکريپت و آژاکس) ، دچار مشکل مي شويم.
ClientID :
صفت ClientID اين مشکل را حل مي نمايد. اين صفت، کاراکتر
$ در صفت UniqueID را با علامت "_" که يک کاراکتر معتبر
مي باشد، جايگزين مي نمايد. يعني مقدار ClientID شبيه اين مي باشد
"CreateUserWizard1_CreateUserStepContainer_Email".
پس اين مشکل نيز رفع شد و
ما مي توانيم با استفاده از جاوا اسکريپت به راحتي به مقدار هر کنترلي دسترسي داشته
باشيم.