asp.net 服務(wù)器控件的 ID,ClientID,UniqueID 的區(qū)別
更新時(shí)間:2010年04月25日 21:52:28 作者:
asp.net 服務(wù)器控件的 ID,ClientID,UniqueID 的區(qū)別分析,需要的朋友可以參考下。
1、簡(jiǎn)述
ID是設(shè)計(jì)的時(shí)候自己所指定的ID,是我們分配給服務(wù)器控件的編程標(biāo)識(shí)符,我們常常使用this.controlid來尋找控件,那么這個(gè)controlid就是這里所說的ID.
ClientID是由ASP.Net生成的服務(wù)器控件得客戶端標(biāo)識(shí)符,當(dāng)這個(gè)控件生成到客戶端頁面的時(shí)候,在客戶端代碼訪問該控件時(shí)就需要通過ClientID來訪問。
UniqueID 服務(wù)器控件的唯一的、分層的形式限定的標(biāo)識(shí)符。 是當(dāng)需要參與服務(wù)端回傳的時(shí)候用的。當(dāng)將控件放置到重復(fù)控件(Repeater、DataList和DataGrid)中時(shí),將可能生成多個(gè)服務(wù)器端的控件,這就需要區(qū)分服務(wù)器端的各個(gè)控件,以使它們的 ID 屬性不沖突。UniqueID 通過將子控件的父控件的 UniqueID 值與控件的 ID 值連接生成,各個(gè)部分之間以 IdSeparator 屬性指定的字符連接。默認(rèn)情況下, IdSeparator 屬性為冒號(hào)字符 (:)。此屬性為在 .Net Framework2.0種新增加。 (UniqueID 的解釋做了參照,本篇重點(diǎn)強(qiáng)調(diào)ID與ClientID)
2、代碼示例解說
看看如下代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<script type="text/javascript">
function GetValue()
{
<SPAN style="COLOR: #0080c0"><STRONG>var t=document.getElementById('<%= TextBox1.ClientID %>');</STRONG></SPAN>
t.innerText=2;
}
</script>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
<input type="button" runat="server" id="button1" onclick="GetValue();" value="賦值" />
</form>
</body>
</html>
有人會(huì)問了:var t=document.getElementById("TextBox1");不是也運(yùn)行的好好的嗎?
答案:在一般的aspx中ID=ClientID(前提是你自己已經(jīng)設(shè)置好了ID值)
看下面代碼,設(shè)置了模板頁
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function GetValue()
{
<SPAN style="COLOR: #0080c0"><STRONG>document.write('<%= TextBox1.ClientID %>')</STRONG></SPAN>
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input type="button" runat="server" id="button1" onclick="GetValue();" value="賦值" />
</asp:Content>
頁面顯示了<SPAN style="COLOR: #0080c0"><STRONG>ctl00_ContentPlaceHolder1_TextBox1</STRONG></SPAN>。即TextBox1.ClientID =ctl00_ContentPlaceHolder1_TextBox1。
此時(shí)把代碼改成
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function GetValue()
{
<SPAN style="COLOR: #0080c0"><STRONG><SPAN style="TEXT-DECORATION: line-through">var t=document.getElementById("TextBox1");</SPAN></STRONG></SPAN>
t.innerText=2;
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input type="button" runat="server" id="button1" onclick="GetValue();" value="賦值" />
</asp:Content>
出錯(cuò)了,t=null,也就是找不到TextBox1,所以需要改成<SPAN style="COLOR: #0080c0"><STRONG>var t=document.getElementById('<%=TextBox1.ClientID%>');</STRONG></SPAN>
3、綜述
view sourceprint?1 對(duì)于服務(wù)器控件,在客戶端調(diào)時(shí)使用ClientID屬性,在服務(wù)端時(shí)使用ID屬性。
ID是設(shè)計(jì)的時(shí)候自己所指定的ID,是我們分配給服務(wù)器控件的編程標(biāo)識(shí)符,我們常常使用this.controlid來尋找控件,那么這個(gè)controlid就是這里所說的ID.
ClientID是由ASP.Net生成的服務(wù)器控件得客戶端標(biāo)識(shí)符,當(dāng)這個(gè)控件生成到客戶端頁面的時(shí)候,在客戶端代碼訪問該控件時(shí)就需要通過ClientID來訪問。
UniqueID 服務(wù)器控件的唯一的、分層的形式限定的標(biāo)識(shí)符。 是當(dāng)需要參與服務(wù)端回傳的時(shí)候用的。當(dāng)將控件放置到重復(fù)控件(Repeater、DataList和DataGrid)中時(shí),將可能生成多個(gè)服務(wù)器端的控件,這就需要區(qū)分服務(wù)器端的各個(gè)控件,以使它們的 ID 屬性不沖突。UniqueID 通過將子控件的父控件的 UniqueID 值與控件的 ID 值連接生成,各個(gè)部分之間以 IdSeparator 屬性指定的字符連接。默認(rèn)情況下, IdSeparator 屬性為冒號(hào)字符 (:)。此屬性為在 .Net Framework2.0種新增加。 (UniqueID 的解釋做了參照,本篇重點(diǎn)強(qiáng)調(diào)ID與ClientID)
2、代碼示例解說
看看如下代碼:
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<script type="text/javascript">
function GetValue()
{
<SPAN style="COLOR: #0080c0"><STRONG>var t=document.getElementById('<%= TextBox1.ClientID %>');</STRONG></SPAN>
t.innerText=2;
}
</script>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></div>
<input type="button" runat="server" id="button1" onclick="GetValue();" value="賦值" />
</form>
</body>
</html>
有人會(huì)問了:var t=document.getElementById("TextBox1");不是也運(yùn)行的好好的嗎?
答案:在一般的aspx中ID=ClientID(前提是你自己已經(jīng)設(shè)置好了ID值)
看下面代碼,設(shè)置了模板頁
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function GetValue()
{
<SPAN style="COLOR: #0080c0"><STRONG>document.write('<%= TextBox1.ClientID %>')</STRONG></SPAN>
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input type="button" runat="server" id="button1" onclick="GetValue();" value="賦值" />
</asp:Content>
頁面顯示了<SPAN style="COLOR: #0080c0"><STRONG>ctl00_ContentPlaceHolder1_TextBox1</STRONG></SPAN>。即TextBox1.ClientID =ctl00_ContentPlaceHolder1_TextBox1。
此時(shí)把代碼改成
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function GetValue()
{
<SPAN style="COLOR: #0080c0"><STRONG><SPAN style="TEXT-DECORATION: line-through">var t=document.getElementById("TextBox1");</SPAN></STRONG></SPAN>
t.innerText=2;
}
</script>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input type="button" runat="server" id="button1" onclick="GetValue();" value="賦值" />
</asp:Content>
出錯(cuò)了,t=null,也就是找不到TextBox1,所以需要改成<SPAN style="COLOR: #0080c0"><STRONG>var t=document.getElementById('<%=TextBox1.ClientID%>');</STRONG></SPAN>
3、綜述
view sourceprint?1 對(duì)于服務(wù)器控件,在客戶端調(diào)時(shí)使用ClientID屬性,在服務(wù)端時(shí)使用ID屬性。
您可能感興趣的文章:
- ASP.NET自定義Web服務(wù)器控件之Button控件
- ASP.NET服務(wù)器端控件RadioButtonList,DropDownList,CheckBoxList的取值、賦值用法
- asp.net Page.EnableEventValidation 屬性驗(yàn)證服務(wù)器控件的回發(fā)和回調(diào)事件出現(xiàn)的錯(cuò)誤
- jquery獲取ASP.NET服務(wù)器端控件dropdownlist和radiobuttonlist生成客戶端HTML標(biāo)簽后的value和text值
- asp.net下使用Request.From獲取非服務(wù)器控件的值的方法
- jQuery生成asp.net服務(wù)器控件的代碼
- ASP.NET 動(dòng)態(tài)寫入服務(wù)器端控件
- asp.net Page.Controls對(duì)象(找到所有服務(wù)器控件)
- Asp.Net使用服務(wù)器控件Image/ImageButton顯示本地圖片的方法
相關(guān)文章
ASP.net中獲取客戶端參數(shù)操作系統(tǒng)信息
這篇文章主要介紹了ASP.net中如何獲取客戶端參數(shù)或操作系統(tǒng)信息,需要的朋友可以參考下2014-03-03ASP.NET Global.asax應(yīng)用程序文件簡(jiǎn)介
Global.asax 文件,有時(shí)候叫做 ASP.NET 應(yīng)用程序文件,提供了一種在一個(gè)中心位置響應(yīng)應(yīng)用程序級(jí)或模塊級(jí)事件的方法。2009-03-03.net平臺(tái)的rabbitmq使用封裝demo詳解
這篇文章主要針對(duì)rabbitmq學(xué)習(xí)后封裝RabbitMQ.Client的一個(gè)分享,文章最后,我會(huì)把封裝組件和demo奉上,對(duì).net平臺(tái)的rabbitmq使用封裝相關(guān)知識(shí)感興趣的朋友一起看看吧2021-09-09asp.net模板引擎Razor調(diào)用外部方法用法實(shí)例
這篇文章主要介紹了asp.net模板引擎Razor調(diào)用外部方法用法,實(shí)例分析了Razor調(diào)用外部方法的相關(guān)使用技巧,需要的朋友可以參考下2015-06-06ASP.NET框架中的數(shù)據(jù)綁定概要與數(shù)據(jù)綁定表達(dá)式的使用
數(shù)據(jù)綁定是ASP.NET中操作數(shù)據(jù)的基礎(chǔ)方式,這里我們暫時(shí)拋開.NET提供的控件,來從基礎(chǔ)上講解ASP.NET框架中的數(shù)據(jù)綁定概要與數(shù)據(jù)綁定表達(dá)式的使用:2016-06-06前臺(tái)JS(jquery ajax)調(diào)用后臺(tái)方法實(shí)現(xiàn)無刷新級(jí)聯(lián)菜單示例
前臺(tái)用AJAX直接調(diào)用后臺(tái)方法,老有人發(fā)帖提問,沒事做個(gè)示例詳細(xì)介紹一下,感興趣的朋友可以參考下2013-01-01有關(guān).NET參數(shù)傳遞的方式引發(fā)的思考
在.NET中參數(shù)的使用方法主要為可選參數(shù)、命名參數(shù)、可變數(shù)量參數(shù)等等。本文也是主要介紹這三種參數(shù)的使用方法2016-12-12