一段时间以来,我一直在构建自定义控件,并克服了许多障碍。我尚未解决的一个挑战是在同一页面上多次使用自定义控件的能力。
我有一个单独运行良好的自定义控件,但是当页面上放置两个相同的控件时,第二个控件能够控制第一个控件。我的猜测是第一个(控件)是第一个对象,第二个是同一个对象。如何在代码中确保如果我在一个页面上多次使用同一个控件,它将表现为两个单独的控件。是否有任何具体的事情我应该查看以确保它允许它多次出现在页面上。
提前致谢。
一段时间以来,我一直在构建自定义控件,并克服了许多障碍。我尚未解决的一个挑战是在同一页面上多次使用自定义控件的能力。
我有一个单独运行良好的自定义控件,但是当页面上放置两个相同的控件时,第二个控件能够控制第一个控件。我的猜测是第一个(控件)是第一个对象,第二个是同一个对象。如何在代码中确保如果我在一个页面上多次使用同一个控件,它将表现为两个单独的控件。是否有任何具体的事情我应该查看以确保它允许它多次出现在页面上。
提前致谢。
添加控件的多个实例时,请确保为它们指定不同的 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;
将自定义控件的几个实例放到 ASPX 页面上,然后查看 HTML 源代码并查看每个控件实例上生成的所有元素 ID 。ASP.NET 将自动修改控件子项的 ID,并在它们前面加上父控件的 ID。如果您输出的是原始 HTML,这可能不会发生。如果有任何重复的 ID,那么这可能是您的问题的原因,特别是如果您使用客户端逻辑来操作页面上的控件。
此外,请确保您没有在控件中使用任何会话或应用程序变量。