国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net 服務器控件的 ID,ClientID,UniqueID 的區別

2024-07-10 13:25:52
字體:
來源:轉載
供稿:網友
1、簡述
ID是設計的時候自己所指定的ID,是我們分配給服務器控件的編程標識符,我們常常使用this.controlid來尋找控件,那么這個controlid就是這里所說的ID.
ClientID是由ASP.Net生成的服務器控件得客戶端標識符,當這個控件生成到客戶端頁面的時候,在客戶端代碼訪問該控件時就需要通過ClientID來訪問。
UniqueID 服務器控件的唯一的、分層的形式限定的標識符。 是當需要參與服務端回傳的時候用的。當將控件放置到重復控件(Repeater、DataList和DataGrid)中時,將可能生成多個服務器端的控件,這就需要區分服務器端的各個控件,以使它們的 ID 屬性不沖突。UniqueID 通過將子控件的父控件的 UniqueID 值與控件的 ID 值連接生成,各個部分之間以 IdSeparator 屬性指定的字符連接。默認情況下, IdSeparator 屬性為冒號字符 (:)。此屬性為在 .Net Framework2.0種新增加。 (UniqueID 的解釋做了參照,本篇重點強調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><STRONG>var t=document.getElementById('<%= TextBox1.ClientID %>');</STRONG></SPAN>
t.innerText=2;
}
</script>
<body>
<form runat="server">
<div>
<asp:TextBox runat="server"></asp:TextBox></div>
<input type="button" runat="server" value="賦值" />
</form>
</body>
</html>


有人會問了:var t=document.getElementById("TextBox1");不是也運行的好好的嗎?
答案:在一般的aspx中ID=ClientID(前提是你自己已經設置好了ID值)
看下面代碼,設置了模板頁

復制代碼 代碼如下:


<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function GetValue()
{
<SPAN><STRONG>document.write('<%= TextBox1.ClientID %>')</STRONG></SPAN>
}
</script>
<asp:TextBox runat="server"></asp:TextBox>
<input type="button" runat="server" value="賦值" />
</asp:Content>
頁面顯示了<SPAN><STRONG>ctl00_ContentPlaceHolder1_TextBox1</STRONG></SPAN>。即TextBox1.ClientID =ctl00_ContentPlaceHolder1_TextBox1。


此時把代碼改成

復制代碼 代碼如下:


<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function GetValue()
{
<SPAN><STRONG><SPAN>var t=document.getElementById("TextBox1");</SPAN></STRONG></SPAN>
t.innerText=2;
}
</script>
<asp:TextBox runat="server"></asp:TextBox>
<input type="button" runat="server" value="賦值" />
</asp:Content>
出錯了,t=null,也就是找不到TextBox1,所以需要改成<SPAN><STRONG>var t=document.getElementById('<%=TextBox1.ClientID%>');</STRONG></SPAN>


3、綜述
view sourceprint?1 對于服務器控件,在客戶端調時使用ClientID屬性,在服務端時使用ID屬性。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淅川县| 泸定县| 元江| 呼和浩特市| 遵义县| 西盟| 双柏县| 阳信县| 衡水市| 石屏县| 和田市| 宝山区| 广南县| 汾西县| 泗洪县| 富宁县| 德格县| 石林| 青海省| 水城县| 宁德市| 赫章县| 安阳县| 常州市| 扎囊县| 本溪市| 定南县| 玉田县| 皋兰县| 老河口市| 同江市| 长顺县| 加查县| 纳雍县| 宁明县| 炉霍县| 双牌县| 阿拉尔市| 建水县| 车致| 五台县|