将控件ID从一个Web用户控件传递到另一个Web用户控件

时间:2010-01-13 14:46:37

标签: asp.net user-controls webusercontrol asp-usercontrols

我有一个Web用户控件,可以容纳许多其他用户控件。我想根据父用户控件的ID来命名那些嵌入式控件。

我正在主用户控件中尝试此代码:

<myLibrary:myChildUserControl1 ID="<%=ID%>" runat="server" />

<myLibrary:myChildUserControl2 ID="<%=ID%>_OkButton" runat="server" />

在这两种情况下,我都会遇到编译错误。

请注意,将控件ID分配给常规HTML元素没有问题。以下代码效果很好:

<div ID="<%=ID%>" >

我缺少什么?

2 个答案:

答案 0 :(得分:1)

在ASP.NET服务器控件中,ID基于其Naming container生成。如果您希望子控件根据其父控件生成ID,则您的父控件应实现INamingContainer interface

答案 1 :(得分:0)

您无法像上面尝试的那样动态生成服务器端ID。只有你这样 以编程方式创建用户控件会起作用,但这也会带来问题。但是可以生成客户端ID;如果它在用户控件中,您应该能够这样做,或者在用户控件中添加属性:

public string DIVID { get { return this.ClientID + "_div"; } }

然后在DIV中写出来。