讨论个关于HtmlInputText控件ID的问题,参与有分

fengfangfang 2005-07-06 09:50:55
Html服务器控件(比如HtmlInputText控件)不仅有ID,还有Name,ClientID,UniqueID

请问这些ID之间有什么区别,有什么联系
什么时候用哪个ID
...全文
176 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanweiwei 2005-07-06
  • 打赏
  • 举报
回复
mark
renyu732 2005-07-06
  • 打赏
  • 举报
回复
SDK的解释:

ClientID 获取由 ASP.NET 生成的服务器控件标识符。
不论您是否已为服务器控件指定了 ID 属性,ASP.NET 都自动为服务器控件生成 ClientID。该属性用于识别客户端操作的控件,例如 ECMAScript 函数。

UniqueID获取服务器控件的唯一的、以分层形式限定的标识符。
服务器控件的完全限定标识符。
此属性与 ID 属性不同,因为 UniqueID 属性包含服务器控件命名容器的标识符。处理页请求时自动生成此标识符。

此属性对于区分包含在其他重复的数据绑定服务器控件中的服务器控件尤其重要。重复控件包括 Repeater、DataList 和 DataGrid Web 服务器控件(或任何在数据绑定时创建的包含重复功能的自定义服务器控件),它们充当其子控件的命名容器。这意味着它为其子控件创建唯一的命名空间,以使它们的 ID 属性值不冲突。
例如,如果将 ASP.NET Label Web 服务器控件包含在 Repeater 服务器控件中,并给 Label 控件赋以 MyLabel 的 ID 属性值,给 Repeater 赋以 MyRepeater 的 ID 属性值。如果将 Repeater 数据绑定到具有三个项的 ArrayList 对象,则 Label 服务器控件的每个实例所产生的 UniqueID 属性是 MyRepeater:ctl0:MyLabel、MyRepeater:Ctl1:MyLabel 和 MyRepeater:Ctl2:MyLabel。


Name获取或设置控件的名称。
控件的名称。默认值为空字符串 ("")。
Name 属性可以在运行时使用,以按名称而不是按类型和编程名称计算对象。由于 Name 属性返回 String 类型,所以可以在 Case 式的逻辑语句中进行计算(在 Visual Basic 中是 Select 语句,在 C# 和 C++ 中是 switch 语句)。

ID获取或设置分配给服务器控件的编程标识符。
设置服务器控件上的此属性可提供对服务器控件的属性、事件和方法的编程访问。Web 开发人员可以通过在 ASP.NET 服务器控件的开始标记中声明 id 属性来设置此属性。
如果没有为服务器控件指定该属性(以声明方式或编程方式),则可通过其父控件的 Controls 属性获取对该控件的引用。
注意 在此属性中包含空格将导致 ASP.NET 页分析器错误。
renyu732 2005-07-06
  • 打赏
  • 举报
回复
楼主的好话题哦..
WeekZero 2005-07-06
  • 打赏
  • 举报
回复
刚在datagrid中试验了一下:
UniqueID是这个控件在在生成html代码后的name
在客户端使用时:document.all["MyDataGrid:_ctl3:ChB"]

ClientID是这个控件在在生成html代码后的id
在客户端使用时:Form1.MyDataGrid__ctl3_ChB 或者document.all["MyDataGrid__ctl3_ChB"]

LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) 说的好
fengfangfang 2005-07-06
  • 打赏
  • 举报
回复
LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)给的第一篇中有这样的例子:

document.all.<%= TextBox1.ClientID%>.value = "kent";

说明在JavaScript中应该使用ClientID来访问控件。
而ID是在服务器端访问控件。

UniqueID和控件解释为HTML后的Name是一致的, WeekZero(星期零)说是可以在自定义控件中使用,不知具体如何使用,是否有例子。
WeekZero 2005-07-06
  • 打赏
  • 举报
回复
UniqueID
是获得控件在生成html代码后的name
如在datagrid中的CheckBox,

UniqueID得到这个CheckBox控件的生成html代码后的name:MyDataGrid:_ctl3:ChB

这个功能在自定义控件中经常使用,便于获得客户端的name来写js脚本
LoveCherry 2005-07-06
  • 打赏
  • 举报
回复
说的简单点UniqueID用:隔开父子控件比如WebUserControl11:TextBox1,在html中作为控件的name
而ClientID是_分割,比如WebUserControl11_TextBox1,在html中作为控件的id
<input name="WebUserControl11:TextBox1" type="text" id="WebUserControl11_TextBox1" />
fphuang 2005-07-06
  • 打赏
  • 举报
回复
我也不明白这些东西,所以是来学习的,有情UP
coley 2005-07-06
  • 打赏
  • 举报
回复
感觉如果是加了runat=server只要id就可以识别了
其他两个没有用过
make
fengfangfang 2005-07-06
  • 打赏
  • 举报
回复
LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)
可以说说自己的看法
PerfectStar 2005-07-06
  • 打赏
  • 举报
回复
看了LoveCherry那两个地址,感觉只有自定义分层控件有区别,自带控件应该ID=Name=ClientID=UniqueID,不知道是不是这样的
PerfectStar 2005-07-06
  • 打赏
  • 举报
回复
mark
fengfangfang 2005-07-06
  • 打赏
  • 举报
回复
细问
1.在客户端可以使用ID、Name中的哪个,还可两个都使用.
2.ClientID和UniqueID有什么区别.
LoveCherry 2005-07-06
  • 打赏
  • 举报
回复
http://blog.ihua.net/uming/archive/2005/06/12/197.html
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconpropertiesinwebformscontrols.asp

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧