サーバコントロールのID,ClientID,UniqueIDの違い

4061 ワード

1、簡単に述べる
IDは設計時に自分で指定したIDであり、サーバコントロールに割り当てられたプログラミング識別子であり、thisをよく使用する.コントロールを探してコントロールを探して、このコントロールはここで言う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()

{

var t=document.getElementById('<%= TextBox1.ClientID %>');

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>

質問する人がいます:var t=document.getElementById("TextBox1");ちゃんと動いてるんじゃないの?
答え:一般的なaspxではID=ClientID(ID値が自分で設定されていることを前提とします)
次のコードを見て、テンプレートページが設定されています.
<%@ 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()

{

document.write('<%= TextBox1.ClientID %>')

}

</script>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <input type="button" runat="server" id="button1" onclick="GetValue();" value="  " />

</asp:Content>

     ctl00_ContentPlaceHolder1_TextBox1。 TextBox1.ClientID =ctl00_ContentPlaceHolder1_TextBox1。
       
<%@ 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()

{

var t=document.getElementById("TextBox1");

t.innerText=2;

}

</script>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <input type="button" runat="server" id="button1" onclick="GetValue();" value="  " />

</asp:Content>

   ,t=null,      TextBox1,      var t=document.getElementById('<%=TextBox1.ClientID%>');
3、  
       ,        ClientID  ,       ID  。