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

C# 在同一页/表单.net上多次使用自定义控件,c#,asp.net,.net,custom-controls,C#,Asp.net,.net,Custom Controls,我已经构建自定义控件一段时间了,并且克服了许多障碍。我尚未解决的一个挑战是在同一页面上多次使用自定义控件的能力 我有一个自定义控件,它自己可以很好地运行,但是当页面上放置两个相同的控件时,第二个控件就可以控制第一个控件。我猜第一个(控件)是第一个对象,第二个是同一个对象。如何在代码中确保如果我在一个页面上多次使用同一控件,它将作为两个单独的控件运行。有什么具体的东西我应该看看,以确保它允许它在一个页面上多次 提前感谢。添加控件的多个实例时,请确保为它们提供不同的ID。然后,在编写任何与它们交互的

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

我有一个自定义控件,它自己可以很好地运行,但是当页面上放置两个相同的控件时,第二个控件就可以控制第一个控件。我猜第一个(控件)是第一个对象,第二个是同一个对象。如何在代码中确保如果我在一个页面上多次使用同一控件,它将作为两个单独的控件运行。有什么具体的东西我应该看看,以确保它允许它在一个页面上多次


提前感谢。

添加控件的多个实例时,请确保为它们提供不同的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>

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


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

没有理由不能在一个页面上放置同一自定义控件的两个独立副本。你说的“控制第一个”是什么意思?是的,这在一个场景中应该可以很好地工作,但这取决于你的实现。所以你应该给我们一些具体的实现细节,我理解你给出的答案,但在我的情况下,它不会真正起作用,因为我的控件完全构建在一个DLL中。因此,您提到的代码需要在每次在页面上注册新控件时自动生成。我不确定我是否理解这个问题。如果控件位于单独的DLL中,则只需在web.config(在
中)中添加对该DLL的引用即可。然后基本上按照我在回答中说的去做,不要使用
ctlFirst.SomeProperty = true;
ctlSecond.SomeProperty = false;