通过ID查询ClientID有什么好处吗?

时间:2017-03-23 18:26:31

标签: asp.net vb.net

这两项检查都有效:

If cntrl.ID.ToString().Contains("ckbx") Then
If cntrl.ClientID.ToString().Contains("ckbx") Then

通过ID查询ClientID有什么好处吗?

BTW,我直接分配给ID,但不分配给ClientID(如果可能的话)。该代码是:

Dim chk = New CheckBox()
chk.ID = "ckbx" + i.ToString()
chk.Checked = True
formCustCatMaint.Controls.Add(chk)

1 个答案:

答案 0 :(得分:2)

  

通过ID查询ClientID有什么好处吗?

简短回答是取决于使用情况......

ID用于为服务器控件分配标识符,该控制器稍后可用于访问该控件。您可以使用代码隐藏中生成的字段,也可以将ID属性的值传递给FindControl方法。 虽然有一个问题; ID属性仅在当前容器中是唯一的:页面,用户控件,带项目模板的控件等。如果在某个其他控件(Repeater,DataGrid)或用户控件的项模板中定义了服务器控件,则其ID属性为no更长的独特。

ClientID是根据相同的规则生成的(控件的ID以其NamingContainer的ID为前缀)。唯一的区别是分隔符 - 对于ClientID,它是" _" (下划线)符号。 ClientID属性在ASP.NET页面中定义的所有控件中是全局唯一的。

另外值得一提的是,如果在母版页中定义了控件,则ID或ClientID的值将相同。但是,它可能会导致意外错误。如果控件的ID在JavaScript语句中是硬编码的,则只有在页面或母版页中定义控件时,代码才会起作用。将控件和JavaScript代码移动到具有ID" UserControl1"的用户控件中。将在运行时失败。

您可以read morehere