在同一页面/表单.net上多次使用自定义控件

时间:2012-04-20 13:04:41

标签: c# asp.net .net custom-controls

我已经建立了一段时间的自定义控件并克服了许多障碍。我尚未解决的一个挑战是能够在同一页面上多次使用自定义控件。

我有一个独立运行的自定义控件,但当两个相同的控件放在页面上时,第二个控件可以控制第一个控件。我的猜测是第一个(控件)是第一个对象,第二个是同一个对象。如何在代码中确保如果我在页面上多次使用相同的控件,它将表现为两个单独的控件。是否有任何具体的事情我应该注意,以确保它允许它不止一次在页面上。

提前致谢。

2 个答案:

答案 0 :(得分:2)

添加控件的多个实例时,请务必为其指定不同的ID。然后在编写任何与它们交互的代码时,请通过该ID引用它们。

<%@ Register Src="controls/myControl.ascx" TagName="myControl" TagPrefix="uc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainPlaceHolder" runat="server">
    <uc1:myControl ID="ctlFirst" runat="server">
    <uc1:myControl ID="ctlSecond" runat="server">
</asp:Content>

然后在后面的代码中:

ctlFirst.SomeProperty = true;
ctlSecond.SomeProperty = false;

答案 1 :(得分:0)

将自定义控件的几个实例放在ASPX页面上,然后查看HTML源代码并查看所有控件的每个上生成的元素ID实例。 ASP.NET将自动修改控件子级的ID,并在其前面加上父控件的ID。如果您要输出原始HTML,则可能不会发生这种情况。如果有任何重复的ID,那么这可能是您的问题的原因,特别是如果您使用客户端逻辑来操纵页面上的控件。

另外,请确保您没有在控件中使用任何会话或应用程序变量。