有关客户ID的问题

时间:2010-04-25 00:44:43

标签: asp.net javascript

我有一个使用ClientId函数发出javascript的用户控件。例如:

Out &= "ValidatorHookupControlID(" & Quote & ddlMonth.ClientID & Quote & "), document.all(" & Quote & CustomValidator1.ClientID & Quote & "));" & vbCrLf

在我看来,ClientID功能不会返回发送到浏览器的最终ID。相反,ClientID函数似乎只知道它的当前父控件,在这种情况下是一个用户控件,因此返回的ID是ID“dtmPassportExpirationDate_ddlMonth”

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

“ctl00_phPageContent_dtmPassportExpirationDate_ddlMonth”

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

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

确保您在页面生命周期中的正确时间读取ClientID。

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

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