ID是設計的時候所指定的ID。
ClientID是當這個控件生成到用戶端頁面時候,需要在用戶端通路時候用的。
UniqueID是當需要參與服務端回傳的時候用的。
備注:當控件是子控件的時候(例如在使用者控件中的Button),ClientID在HTML頁面中是作為控件的ID屬性,UniqueID是作為控件的Name屬性,如果不是子控件,那麼ClientID和UniqueID是相同的
例如:
MyControl1是一個使用者控件,裡面包含一個ID為Button1的按鈕,把MyControl1放在一個頁面中運作,下面是其頁面的HTML代碼
<input type="submit" name="MyControl1:Button1" value="Button" id="MyControl1_Button1" />
ClientID:MyControl1_Button1
UniqueID:MyControl1:Button1
補充:當要編寫使用者控件中一個控件的用戶端事件代碼時,如果想在使用者控件内編寫必須要擷取該控件的ClientID。
ASP.NET 的伺服器端控件有三種關于 ID 的屬性 ID, ClientID 和 UniqueID。
ID 表示控件的伺服器端程式設計的辨別符,我們寫伺服器端的代碼,就要用到這個 ID, 通過這個 ID 可以在伺服器端對伺服器端控件的屬性、方法和時間進行程式設計通路。
ClientID 表示由伺服器端生成的用戶端控件的ID, 經常用于在用戶端腳本中通路伺服器控件所呈現的 HTML 元素。一般情況下與伺服器端的 ID 相同,有時,不能為控件生成唯一的名稱,例如,如果 Repeater 空間在它的某個模闆中包含一個 Label 控件,則将在用戶端生成多個該 Lable 的 HTML 元素, 為防止命名沖突,ASP.NET 為各個伺服器控件生成一個唯一的 ClientID ,ClientID 通過将子控件的父控件的 UniqueID 值與控件的 ID 值連接配接生成,各個部分之間以下劃線 _ 連接配接。
UniqueID 用于擷取伺服器控件的唯一的、以分層方式表示的辨別符。當将控件放置到重複控件(Repeater、DataList和DataGrid)中時,将可能生成多個伺服器端的控件,這就需要區分伺服器端的各個控件,以使它們的 ID 屬性不沖突。UniqueID 通過将子控件的父控件的 UniqueID 值與控件的 ID 值連接配接生成,各個部分之間以 IdSeparator 屬性指定的字元連接配接。預設情況下, IdSeparator 屬性為冒号字元 (:)。此屬性為在 .Net Framework2.0種新增加。
擷取由 ASP.NET 生成的伺服器控件辨別符。
問題一:使用者控件的頁面JavaScript中需要使用Asp.net的控件ID,出現不一緻。
問題二:母版頁的子頁面JavaScript中需要使用Asp.net的控件ID,出現不一緻。
解決辦法:
document.getElementById("<%=TextBox1.ClientID%>").value="1234567";
此代碼可以在用戶端完成對伺服器端控件的通路,由于ASP.NET會為把伺服器端控件在用戶端的呈現生成不同的名稱,是以此功能比較有用擷取。
注意采用此解決辦法的前提: Asp.net的控件為靜态控件(通過工具添加的控件)