Asp.net 关于客户端ID的问题

Asp.net 关于客户端ID的问题,asp.net,javascript,Asp.net,Javascript,我有一个用户控件,它使用ClientId函数匹配javascript。例如: Out &= "ValidatorHookupControlID(" & Quote & ddlMonth.ClientID & Quote & "), document.all(" & Quote & CustomValidator1.ClientID & Quote & "));" & vbCrLf 在我看来,ClientID函数并没

我有一个用户控件,它使用ClientId函数匹配javascript。例如:

Out &= "ValidatorHookupControlID(" & Quote & ddlMonth.ClientID & Quote & "), document.all(" & Quote & CustomValidator1.ClientID & Quote & "));" & vbCrLf
在我看来,ClientID函数并没有返回发送到浏览器的最终ID。相反,ClientID函数似乎只知道其当前父控件,在本例中,它是用户控件的一个名称,因此返回的ID是ID“dtmPassportExpirationDate\ddlMonth”

当用户控件实际上包含在母版页中,并且使用的最终ID是:

“ctl00\u phPageContent\u dtmPassportExpirationDate\u ddlMonth”

我可能是疯了,但它似乎就是这么做的。我希望ClientID函数将返回HTML中使用的最终ID


我遗漏了什么吗?

请确保在页面生命周期的正确时间阅读ClientID

如果您在PreRender事件或之后读取它,您将获得完整ID。在此之前,您可以通过动态添加控件来操作WebForms对象,因此ASP.NET无法确定层次结构是什么


如果您需要对ClientID进行更多的控制,请升级到ASP.NET 4.0,在那里您可以更细粒度地控制通过WebForms发送到浏览器的内容。