我有一个Web用户控件,可以容纳许多其他用户控件。我想根据父用户控件的ID来命名那些嵌入式控件。
我正在主用户控件中尝试此代码:
<myLibrary:myChildUserControl1 ID="<%=ID%>" runat="server" />
或
<myLibrary:myChildUserControl2 ID="<%=ID%>_OkButton" runat="server" />
在这两种情况下,我都会遇到编译错误。
请注意,将控件ID分配给常规HTML元素没有问题。以下代码效果很好:
<div ID="<%=ID%>" >
我缺少什么?
答案 0 :(得分:1)
在ASP.NET服务器控件中,ID基于其Naming container生成。如果您希望子控件根据其父控件生成ID,则您的父控件应实现INamingContainer interface
答案 1 :(得分:0)
您无法像上面尝试的那样动态生成服务器端ID。只有你这样 以编程方式创建用户控件会起作用,但这也会带来问题。但是可以生成客户端ID;如果它在用户控件中,您应该能够这样做,或者在用户控件中添加属性:
public string DIVID { get { return this.ClientID + "_div"; } }
然后在DIV中写出来。