Wann würden Sie ein Web-Benutzersteuerelement über ein benutzerdefiniertes Web-Steuerelement verwenden?

8

Kann mir jemand erklären, wann ich jeden davon benutzen soll? Sie scheinen in vielen Fällen fast austauschbar.

Das benutzerdefinierte Steuerelement wird der Symbolleiste hinzugefügt, während das Benutzersteuerelement (ascx) dies nicht kann. Das benutzerdefinierte Steuerelement wird nicht im Designer gerendert, während das Benutzersteuerelement dies tut. Darüber hinaus, wie wählen Sie, welche die richtige ist?

Außerdem suche ich nach dem besten Weg, um auf die Steuerelemente von JavaScript (GetElementById) zuzugreifen. Also, ein Punkt in die richtige Richtung für die Unterstützung der Client-Seite wäre großartig.

    
Mike 22.09.2008, 17:00
quelle

8 Antworten

10

Dies stammt von Microsofts Website:

Webbenutzersteuerelemente

  • Einfacher zu erstellen
  • Begrenzte Unterstützung für Verbraucher, die ein visuelles Design-Tool verwenden
  • Eine separate Kopie des Steuerelements ist in jeder Anwendung erforderlich
  • Kann der Toolbox in Visual Studio nicht hinzugefügt werden
  • Gut für das statische Layout

Benutzerdefinierte Steuerelemente im Web

  • Schwieriger zu erstellen
  • Volle visuelle Design-Tool-Unterstützung für Verbraucher
  • Nur eine einzige Kopie des Steuerelements ist erforderlich, in der globalen Montage Cache
  • Kann der Toolbox in hinzugefügt werden Visual Studio
  • Gut für dynamisches Layout

Ссылка

    
AaronS 22.09.2008 17:06
quelle
2

Ein UserControl muss von einer Website gehostet werden und ist einer ASCX-Datei mit dem Codebehind-Modell zugeordnet. Daher können Sie mit einem Benutzersteuerelement das grundlegende Markup für das Steuerelement in der ASCX-Datei definieren und den gesamten Code in die ASCX.CS-Datei einfügen.

Ein WebControl ist nur eine Klasse und lässt Sie keine assoziierte ASCX-Datei definieren; Sie müssen die Render-Funktion überschreiben, um alle Markups auszudrucken, die das Steuerelement erzeugen soll. Da es jedoch nicht von einem ASCX abhängt, kann es in eine gemeinsame Bibliothek gestellt werden. (eine DLL)

Um auf Ihre Frage zu antworten: Sowohl Web- als auch UserControls haben den gleichen Vorteil - sie nehmen einen Teil einer Seite und kapseln ihn ein. Ich verwende UserControls, wenn der betreffende Code nur für eine meiner Websites gilt. Wenn ich an mehreren Standorten ähnlichen Code verwende, wandle ich den Code in ein WebControl um und verschiebe es in eine gemeinsam genutzte Bibliothek. Auf diese Weise, wenn ich es aktualisieren muss, mache ich Änderungen an einer Stelle und nicht 3 oder 4.

Tipp: Sie können einige Probleme bei der Definition Ihres eigenen WebControl umgehen, indem Sie von einem der Standard-WebControls von ASP erben. Viele Standardsteuerelemente wie Label oder Image sind nicht versiegelt - Sie können von ihnen erben und ihre Methoden überschreiben, um Ihre eigene spezialisierte Version dieses Steuerelements zu erstellen. Dies ist viel einfacher und weniger fehleranfällig als die direkte Erweiterung von WebControl.

    
The Digital Gabeg 22.09.2008 17:09
quelle
1

Ich denke, was Sie denken, ist ein benutzerdefiniertes Steuerelement im Vergleich zu einem Benutzersteuerelement, die beide Websteuerelemente sind. Ein Benutzersteuerelement verfügt über keine Designer-Benutzeroberfläche, während ein benutzerdefiniertes Steuerelement dies kann.

Normalerweise trennen wir unsere Benutzeroberfläche mithilfe von UserControls in separate Funktionsbereiche. Wenn wir jedoch Funktionen erstellen, die wir für mehrere Lösungen verwenden möchten, erstellen wir sie im Allgemeinen als benutzerdefinierte Steuerelemente.

Nur benutzerdefinierte Steuerelemente können der Toolbox hinzugefügt werden.

Hier ist ein Auszug von Microsoft:

Ссылка

    
Jason Stevenson 22.09.2008 17:08
quelle
1

Benutzersteuerelemente werden mit dem Projekt kompiliert und müssen in derselben Sprache wie das Projekt geschrieben werden.

Benutzerdefinierte Steuerelemente können auf der Zeichenfläche abgelegt und durch Festlegen von Eigenschaften konfiguriert werden, ohne dass der Programmierer alle Interna kennt (kann gut oder schlecht sein). Da das benutzerdefinierte Steuerelement in der DLL vorkompiliert wird, muss es nicht in derselben Sprache wie das Projekt geschrieben werden.

Wenn auf Details geachtet wird, kann das benutzerdefinierte Steuerelement so geschrieben werden, dass es im Designer angezeigt wird (obwohl dies den Aufwand vielleicht nicht wert ist).

    
doug 22.09.2008 20:02
quelle
0

Um von JavaScript auf sie zuzugreifen, sollten Sie document.GetElementById('<%=TheControl.ClientID%>') verwenden.
Der Unterschied zwischen einem Websteuerelement und einem Benutzersteuerelement besteht darin, dass ein Benutzersteuerelement die Ascx-Datei mit der HTML-Definition hat, während das Websteuerelement dies nicht tut. das ist die Ursache für andere Unterschiede. Auch für Benutzersteuerelemente können Sie new Control() nicht verwenden, stattdessen müssen Sie LoadControl verwenden, da das .ascx geladen wird.
Für einfache Steuerelemente, die von .Net-Steuerelementen wie einem Textfeld mit Validierung oder etwas Ähnlichem erben, verwende ich Websteuerelemente; Für komplexere Steuerelemente mit html und inneren Steuerelementen neige ich dazu, Benutzersteuerelemente zu verwenden. Aber es ist im Grunde Ihre persönliche Präferenz.

    
configurator 22.09.2008 17:07
quelle
0

Einfach:

Benutzerkontrolle:

  • UserControl benötigt * .ascx-Datei, um die Instanzinitialisierung abzuschließen. Daher können Sie kein UserControl von einem anderen ableiten.
  • UserControl hat die * .ascx-Datei, so dass Sie einfach HTML schreiben können. Und (der größte Vorteil) Sie können den Inhalt * .ascx der Datei ändern und das Aussehen des Steuerelements in der Laufzeit der Webanwendung ändern.

WebControl:

  • WebControl ist "nur" Klasse in Assembly, so dass Sie von ihnen ein anderes Steuerelement ableiten können.
  • WebControl hat keine * .ascx (oder eine andere) Datei, und niemand kann das Aussehen dieses Steuerelements ändern (zum Beispiel nicht qualifizierte Web-Admins).
TcKs 22.09.2008 17:09
quelle
0

Das stimmt nicht ganz. Ein Webcontrol ist wie eine Schaltfläche, und Sie können einen Designer dafür erstellen, so dass es im Designer-Modus gerendert wird.

Der Hauptunterschied besteht darin, dass ein Webcontrol eine atomare Einheit ist. Es sollte genauso funktionieren wie alle anderen Standard-Serversteuerelemente in Visual Studio (einschließlich des Designer-Modus). Darüber hinaus ist es vollständig in Code erstellt und in der DLL gespeichert (d. H. Es gibt keine HTML-Seite, und nichts ist auf der Website veröffentlicht).

Ein Benutzersteuerelement ist die .NET-Version eines ASP-Includes. Es gibt ein HTML-Snippet mit der entsprechenden Code-Behind-Seite. Es gibt eine ASCX-Datei, die während der Veröffentlichung auf die Website übertragen wird. Ein zusätzlicher Hinweis, diese sind einfacher zu entwickeln als Serversteuerungen.

Ist einer besser als der andere? Das hängt davon ab, was das Ziel ist. Aber im Allgemeinen, wenn Sie etwas für andere Leute / Projekte bauen, gehen Sie mit einem webcontrol. Wenn Sie etwas für den Verbrauch Ihres eigenen Projekts erstellen, dann gehen Sie mit einem Benutzersteuerelement.

Was JS betrifft, ist es schwerer zu beschreiben und rechtfertigt eine ziemlich große Diskussion. Für Serversteuerelemente müssen Sie die Hooks für das JS angeben, um die Client-ID für jedes der internen Steuerelemente abzurufen. Während eines Benutzersteuerelements können Sie das JS direkt auf dem Benutzersteuerelement codieren und auf die Steuerelemente genauso wie in einer ASPX-Seite zugreifen.

    
Stephen Wrighton 22.09.2008 17:13
quelle
0

Benutzersteuerelemente

  • Einfach zu implementieren, da Sie visuell & amp; andere Steuerelemente im Markup-Teil löschen.
  • Gute Designerunterstützung in Visual Studio
  • Kann nur im selben Projekt wiederverwendet werden
  • Sie können auch Vorlagensteuerelemente erstellen, wenn Sie möchten (wenn auch nicht so häufig verwendet)

Benutzerdefinierte Serversteuerelemente

  • Schwieriger zu erstellen, aber es gibt eine ganze Reihe möglicher Szenarien:
    • Erben von vorhandenen Steuerelementen wie Label, Button, ...
    • Erstellen Sie ein zusammengesetztes Steuerelement
    • Erstellen Sie templatierte, + datengebundene Steuerelemente
  • Große Wiederverwendbarkeit in anderen Projekten
  • Ideal um Rahmenbedingungen zu schaffen, die unternehmensweit genutzt werden können
XIII 02.07.2010 12:56
quelle