什么asp.net页面事件是clientIDs分配?

时间:2010-06-15 20:17:24

标签: asp.net clientid clientscript

我想做这样的事情:

Panel divPanel = new Panel();
divPanel.ID = "divPanel";
this.Page.Controls.Add(divPanel);


string script = "function alertID(){alert("the id is: "+divPanel.ClientID+");}";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "scripttests", script);

但是当我把这段代码放在page_load中时,我没有得到完整的id,这是ctl00_ContentMain_divPanel,我只是得到了divPanel。

我应该使用另一个活动吗?我如何使这项工作?

2 个答案:

答案 0 :(得分:0)

PreRender很好,但它也应该在Page_Load中工作。

http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid(VS.71).aspx

您的脚本渲染代码是否也在page_load中运行?它们在上面的示例中是一起的,但也许它们只是复制/粘贴在一起?

如果此代码位于自定义控件中,您还需要将INamingContainer接口添加到ClientID的控件声明中,以便按预期工作:

http://msdn.microsoft.com/en-us/library/system.web.ui.inamingcontainer.aspx

此外,如果这是一个自定义控件,您应该添加到控件本身的Controls集合,而不是包含页面。即:this.Controls.Add()而不是this.Page.Controls.Add()

答案 1 :(得分:0)

在您的示例中,您将直接添加到Page控件集合。这意味着客户端ID应该是divPanel。也许您期望它的客户端ID是不正确的。