0

私はしばらくカスタム コントロールを構築してきましたが、多くのハードルを克服しています。まだ解決していない課題の 1 つは、同じページでカスタム コントロールを複数回使用できることです。

単独で適切に機能するカスタム コントロールがありますが、2 つの同じコントロールをページに配置すると、2 番目のコントロールが最初のコントロールを制御できます。私の推測では、最初のもの (コントロール) は最初のオブジェクトで、2 番目のものは同じオブジェクトです。ページで同じコントロールを複数回使用すると、2 つの別個のコントロールとして動作することをコードで確認するにはどうすればよいですか。ページに複数回表示できるようにするために確認する必要がある特定の事項はありますか。

前もって感謝します。

4

2 に答える 2

1

コントロールの複数のインスタンスを追加する場合は、必ず異なる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;
于 2012-04-20T13:09:13.313 に答える
0

カスタム コントロールのいくつかのインスタンスを ASPX ページに配置し、HTML ソースを表示して、コントロール インスタンスで生成されたすべての要素 ID を確認します。ASP.NET は、親コントロールの ID を前に付けて、コントロールの子の ID を自動的にマングルします。生の HTML を出力している場合、これは発生しない可能性があります。重複する ID がある場合、特にクライアント側のロジックを使用してページ上のコントロールを操作している場合は、それが問題の原因である可能性があります。

また、コントロールでセッションまたはアプリケーション変数を使用していないことを確認してください。

于 2012-04-20T13:17:04.907 に答える