程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 漫話ID(中)——UniqueID和ClientID

漫話ID(中)——UniqueID和ClientID

編輯:關於ASP.NET

在上一篇漫話ID(上)——Name和ID的種種中,我介紹了關於name和id的一些問題,在這片文章中, 我們把目光放到ID上來,這篇主要關注自定義控件和repeater等控件中碰到的UniqueID和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 屬 性為冒號字符 (:)。

例如,創建以下 ASP.NET 服務器控件:

<asp:textbox id="TextBox1" runat="server" text="Sample Text" />

ClientID 屬性被設置為 TextBox1,在基於 HTML 的浏覽器中,其結果元素與以下所示類似:

<input name="TextBox1" type="text" value="Sample Text" id="Text1" />

可以使用這些屬性在客戶端腳本中引用服務器控件。通常,必須在客戶端腳本中用完全限定引用來引 用控件;如果控件是頁面中 form 元素的子控件,則一般使用document.forms[0].TextBox1.value = "New value"在客戶端腳本中引用控件。有些控件將子控件呈現在頁面中。這些控件中包括數據列表控件 (如 GridView、DetailsView、FormView、DataList 和 Repeater 控件)、用戶控件和 Web 部件控件。

例1:

在頁面中加入一個DataGrid控件,然後在該控件中加入Button子控件。

前台代碼:

<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="false">

後台代碼:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ArrayList list = new ArrayList();
            list.Add(1);
            list.Add(2);
            DataGrid1.DataSource = list;
            DataGrid1.DataBind();
        }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved