asp.net 服务器控件的 ID,ClientID,UniqueID 的区别

 更新时间:2010年04月25日 21:52:28   作者:  
asp.net 服务器控件的 ID,ClientID,UniqueID 的区别分析,需要的朋友可以参考下。
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 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>

有人会问了: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()
{
<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。

此时把代码改成
复制代码 代码如下:

<%@ 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>
出错了,t=null,也就是找不到TextBox1,所以需要改成<SPAN style="COLOR: #0080c0"><STRONG>var t=document.getElementById('<%=TextBox1.ClientID%>');</STRONG></SPAN>

3、综述
view sourceprint?1 对于服务器控件,在客户端调时使用ClientID属性,在服务端时使用ID属性。

相关文章

  • ASP.NET缓存的方法和最佳实践

    ASP.NET缓存的方法和最佳实践

    您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。内存现在非常便宜 — 因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高
    2012-04-04
  • WPF创建Prism应用程序

    WPF创建Prism应用程序

    这篇文章介绍了WPF创建Prism应用程序的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • 微信小程序 (十七)input 组件详细介绍

    微信小程序 (十七)input 组件详细介绍

    这篇文章主要介绍了微信小程序 input 组件详细介绍的相关资料,需要的朋友可以参考下
    2016-09-09
  • 实例讲解.NET中资源文件的创建与使用

    实例讲解.NET中资源文件的创建与使用

    资源文件顾名思义就是存放资源的文件。资源文件在程序设计中有着自身独特的优势,他独立于源程序,这样资源文件就可以被多个程序使用
    2011-12-12
  • .NET Core利用 AsyncLocal 实现共享变量的代码详解

    .NET Core利用 AsyncLocal 实现共享变量的代码详解

    在Web 应用程序中,我们经常会遇到这样的场景,如用户信息,租户信息本次的请求过程中都是固定的,我们希望是这种信息在本次请求内,一次赋值,到处使用。本文就来探讨一下,如何在.NET Core 下去利用AsyncLocal 实现全局共享变量
    2022-04-04
  • ASP.NET Core使用GraphQL第二章之中间件

    ASP.NET Core使用GraphQL第二章之中间件

    这篇文章主要给大家介绍了关于ASP.NET Core使用GraphQL第二章之中间件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Asp.NET调用百度翻译的方法

    Asp.NET调用百度翻译的方法

    这篇文章主要介绍了Asp.NET调用百度翻译的方法,是针对百度接口开发的经典实用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • asp.net实现调用带有输出参数的存储过程实例

    asp.net实现调用带有输出参数的存储过程实例

    这篇文章主要介绍了asp.net实现调用带有输出参数的存储过程,结合实例形式分析了前端基于jQuery的ajax调用及后台存储过程调用的相关技巧,需要的朋友可以参考下
    2016-03-03
  • ASP.NET MVC4中使用Html.DropDownListFor的方法示例

    ASP.NET MVC4中使用Html.DropDownListFor的方法示例

    这篇文章主要介绍了ASP.NET MVC4中使用Html.DropDownListFor的方法,结合实例形式分析了控制器数据源及Html.DropDownListFor显示操作的相关技巧,需要的朋友可以参考下
    2016-08-08
  • asp.net 验证码的简单制作(vb.net+C#)

    asp.net 验证码的简单制作(vb.net+C#)

    asp.net中实现简单验证码的方法,需要的朋友可以参考下
    2012-05-05

最新评论