1

我有一个 Web 用户控件,其中包含许多其他用户控件。我想根据父用户控件的 ID 来命名这些嵌入式控件。

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

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

或者

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

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

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

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

我错过了什么?

4

2 回答 2

1

在 ASP.NET 服务器中,控件的 ID 是根据其命名容器生成的。如果您希望您的子控件根据其父控件生成 ID,则您的父控件应实现INamingContainer 接口

于 2010-01-13T16:08:59.507 回答
0

您不能像上面尝试的那样动态生成服务器端 ID。仅当您以编程方式创建用户控件时才会起作用,但这也带来了问题。可以生成客户端 ID;如果在用户控件中,您应该能够做到这一点,或者在您的用户控件中添加一个属性:

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

然后在 DIV 中写出。

于 2010-01-13T16:20:53.510 回答