Asp.Net的控件ID

asp.net控件有三个ID属性,ID、UniqueID和ClientID,但是这三个ID有什么不同?

写个例子来看看

新建一个.NET Framework 4.0的asp.net应用程序项目,vs会自动生成一个模板,里面包含几个aspx页面和一个母版页,在default.aspx页面中添加一个label控件和button控件,如图

后台写上如下代码:

string display = "ID: " + Button1.ID + "<br/>" + "UniqueID: " + Button1.UniqueID + "<br/>" + "ClientID: " + Button1.ClientID + "<br/>";
Label1.Text = display;

F5运行,如图

看出来了吗? 我们再来看看html是什么样的。。 

 

ClientID和input控件的ID一样,UniqueID和input控件的name一样,而ID则没有出现,但是不管是ClientID还是UniqueID都包含了它。

因为asp.net控件的ID表示我们给它命名的ID,不论在服务端还是客户端程序都不会使用这个ID;UniqueID表示控件的服务端ID;ClientID表示客服端ID,在客户端JavaScript就可以通过它使用来访问该控件。

很多人在前端访问这个button时,会这样写:

document.getElementByID("Button1");

这样写的话,就错了,因为在客户端button1并不是它的ID,正确的写法应该是:

document.getElementByID("<%= Button1.ClientID %>"); 

当button在母版页或者是usercontrol里,它的UniqueID和ClientID会自动加上父控件的UniqueID和分隔符。在服务端默认是"$",在客户端将这些"$"转换为下滑线"_"。

参考:《庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术》 (好书一本,强烈推荐)

posted @ 2012-03-12 20:39  Little Prince  阅读(959)  评论(0编辑  收藏  举报