天天看點

ID,ClientID,UniqueID的差別

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的控件為靜态控件(通過工具添加的控件)