Unterschied zwischen einem WebControl und einem CompositeControl?

8

Ich habe mich im Internet umgeschaut und ein paar Artikel über das Thema gefunden, aber ich kann immer noch nicht den Unterschied zwischen ihnen ausmachen. Ich habe den unten gezeigten Code, wenn ich von einem CompositeControl erben funktioniert es perfekt, aber nicht, wenn ich von einem WebControl erben. (Beide rendern den Code, aber nur CompositeControl behandelt das Ereignis)

%Vor%

Wenn ich also auf die Schaltfläche klicke und das Steuerelement als WebControl gerendert wird, passiert nichts. Aber wenn ich das WebControl zu einem CompositeControl ändere, wird der Text ausgedruckt. Warum? Was ist der Unterschied zwischen dem WebControl und dem CompositeControl?

    
Patrick 16.10.2009, 14:31
quelle

2 Antworten

16

CompositeControls implementieren INamingContainer während WebControls nicht.

Es gibt mehr Unterschiede zwischen den beiden, aber aus diesem Grund kann das Composite-Steuerelement das Ereignis an sein untergeordnetes Element weiterleiten, das Websteuerelement jedoch nicht. Sie können dies sehen, indem Sie Ihre Klassendeklaration folgendermaßen ändern:

%Vor%

Voila, Ihr Button-Event wird nun bearbeitet!

INamingContainer ist nur eine Markierungsschnittstelle, die ASP mitteilt .NET Ein Steuerelement enthält untergeordnete Elemente, auf die unabhängig von ihrem übergeordneten Steuerelement möglicherweise zugegriffen werden muss, damit untergeordnete Steuerelemente die zusätzlichen hübschen IDs erhalten, die wir ASP.NET-Entwicklern kennen und lieben gelernt haben (z. B. ctl00$ctl00 ).

Wenn WebControl nicht INamingContainer implementiert, ist die ID des untergeordneten Elements nicht garantiert eindeutig. Daher kann das übergeordnete Element es nicht zuverlässig identifizieren und kann keine Ereignisse weiterleiten.

    
Jeff Sternal 16.10.2009, 15:28
quelle
0
Was ist der Unterschied zwischen UserControl, WebControl, RenderedControl und CompositeControl?

Warum verhält sich jemand anders als der andere? Weil sie verschiedene Arten sind. Wenn sie vom selben Typ wären, gäbe es nicht zwei.

    
Will 16.10.2009 14:51
quelle