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控件和组件开发技术》 (好书一本,强烈推荐)
转载于:https://www.cnblogs.com/liuxun/archive/2012/03/12/2392338.html