ID 表示控制項的伺服器端編程的標識符,我們寫伺服器端的代碼,就要用到這個 ID, 通過這個 ID 可以在伺服器端對伺服器端控制項的屬性、方法等進行編程訪問。
ClientID 表示由伺服器端產生的用戶端控制項的ID, 經常用於在用戶端指令碼中訪問伺服器控制項所呈現的 HTML 元素。一般情況下與伺服器端的 ID 相同,有時,不能為控制項產生唯一的名稱,例如,如果 Repeater 空間在它的某個模板中包含一個 Label 控制項,則將在用戶端產生多個該 Lable 的 HTML 元素, 為防止命名衝突,ASP.NET 為各個伺服器控制項產生一個唯一的 ClientID ,ClientID 通過將子控制項的父控制項的 UniqueID 值與控制項的 ID 值串連產生,各個部分之間以底線 _ 串連。
提到ClientID就順便提一提OnClientClick主要是在用戶端執行的按鈕的用戶端事件
如果我們設定了OnClientClick的事件讓其返回為false那麼系統將只執行OnClientClick事件而不會觸動到伺服器端的onclick事件
據個例子:
在使用使用者控制項的時候我們有時候通常要驗證資料的有效性和合法性如果是在普通的頁面上我們很好解決這個問題使用javascript就能很輕鬆的解決但是如果是使用使用者控制項就會有一個問題就是伺服器端的控制項的ID是不知道的!!這是我們是有辦法的!!
Code
1 <asp:Button ID="btnSave" runat="server" Text="儲存" CssClass="button"
2 onclick="btnSave_Click" OnClientClick="return IsNULL();" /> &
nbsp;
3<script language="javascript" type="text/javascript">
4
function IsNULL()
5
{
6 var txtid='<%=this.txtCode.ClientID%>'
;
7 var txt=
document.getElementById(txtid).value;
8 if(txt==""
)
9
{
10 alert("請輸入編輯code"
)
11 return false
;
12 }
13 }
14
15</script>
以上的代碼則能很好的解決這個問題!!
<%=this.txtCode.ClientID%>綁定的是txtCode.ClientID
再通過OnClientClick事件對其內容進行驗證如果資料不合格返回false Button 只是響應到OnClientClick事件而onClick將不執行!!這時候把這個使用者控制項拖到頁面中則能很好的和在本頁面一樣驗證資料的有效性
UniqueID
用於擷取伺服器控制項的唯一的、以分層方式表示的標識符。當將控制項放置到重複控制項(Repeater、DataList和DataGrid)中時,將可能產生多個伺服器端的控制項,這就需要區分伺服器端的各個控制項,以使它們的 ID 屬性不衝突。UniqueID 通過將子控制項的父控制項的 UniqueID 值與控制項的 ID 值串連產生,各個部分之間以 IdSeparator 屬性指定的字元串連。預設情況下, IdSeparator 屬性為冒號字元 (:)。此屬性為在 .Net Framework2.0種新增加。
可以簡單地認為:ClientID和UniqueID是當控制項放置到重複控制項(Repeater、DataList和DataGrid)中時,用於區分控制項的用戶端和伺服器的標識符。ID就是控制項無重複時在伺服器端表示控制項的一般程式設計識別碼。