2010-06-24 2 views
9

Ich habe ASP.NET (C#) für die letzten zwei Jahre verwendet. Ich habe so viel gelernt, aber es gibt noch viel mehr :)Web-Benutzersteuerelemente anstelle von Web Forms verwenden

ich verwendet habe Masterpages zu lernen, ‚Web User Controls‘ für Dinge wie Header, Navigation, Fußzeilen usw.

Eine Sache, die ich nie wirklich haben verstanden wird die Verwendung von "Web User Controls" für Ihren Inhalt und Ihre Logik;

Home.aspx ------ Home.ascx 
AboutUs.aspx ----- AboutUs.ascx 
Ordering.aspx ---- Ordering.acsx 

Ich habe in den letzten Monaten mit ein paar Projekten gearbeitet, die diese Struktur verwenden. Ich bin mir bewusst, dass dies tatsächlich gängige Praxis ist, aber ich verstehe die Vorteile nicht wirklich.

Ich erinnere mich, als ich diesen Ansatz versuchte und schreckliche viewstate Probleme mit Steuerelementen wie der Gridview hatte ... sobald ich die ganze Logik aus und legte es in eine ASPX-Seite alles hat gut funktioniert.

Ich erkenne jetzt, dass ich vielleicht die Gridview der Viewstate-Sammlung hinzufügen musste ... aber dies verstärkt nur meine Schwierigkeit zu verstehen, warum dieser Ansatz verwendet wird - angesichts des Viewstate-Problems.

Ich verstehe die Vorteile von 'Web User Controls' in Bezug auf Kopfzeilen, Menüs, Fußzeilen usw. überall, wo es Doppelungen gibt, aber die Projekte, die ich gesehen habe, haben ziemlich spezifische Seiten Mit anderen Worten, es ist unwahrscheinlich, dass es irgendwo anders wiederverwendet wird - die aspx-Seite enthält nur ein Steuerelement (.ascx) mit dem Inhalt und der Logik und es wird nur auf dieser Seite verwendet, nirgendwo anders.

Ignorieren "Code-Wiederverwendung", welche anderen Vorteile bietet dieser Ansatz?

In diesem Fall sehe ich keinen Vorteil bei der Verwendung dieser Methode (:

Antwort

2

Ich denke, Ihr Beispiel von PageA.aspx -> PageA.ascx ist eigentlich ein schlechtes Beispiel für die Hervorhebung der Vorteile von Web-Benutzersteuerelementen. Machen Sie einen Schritt zurück von diesen "Seiten" -Steuerungsbeispielen und denken Sie an den Hauptzweck eines Webbenutzer-Steuerelements. Sie dienen dem Zweck, UI und Funktionalität in einem diskreten Block zu kapseln. Der größte Vorteil meiner Meinung nach ist zu wissen, dass, wenn ich so etwas wie ein Kommentarformular einmal als Webbenutzer steuere und es auf allen Seiten meiner Site implementiere, dass ich ein einzelnes Element in der Lösung aktualisieren muss, das alle aktualisiert Seite, auf der es existiert.

Ein weiterer weniger offensichtlicher Vorteil ist, dass viele Content Management Systeme wie Umbraco die Web-Benutzerkontrolle als Plugins verwenden. Auf diese Weise können Sie Plugins für den Endanwender/-Editor entwickeln, die nach Belieben Seiteninhalte auswählen und einfügen können.

+0

Brian, etwas wie ein Kommentarformular in einem Web-Steuerelement platzieren macht total Sinn, ich bin für alle Widgets wie diese in Steuerelemente ... vielleicht diese Projekte, die ich wo gesehen habe Die ganze Seite ist in einem Web-Steuerelement verschachtelt ist nicht die Art und Weise, Dinge zu tun? .... wenn Home.aspx mehrere Steuerelemente wie 'HomepageSlideshow.ascx', 'TwitterFeed.ascx' enthielt, wäre das viel sinnvoller. – Dal

+0

@Dal, genau. Obwohl technisch unterschiedlich, verhalten sich eine Seite und eine Web-Benutzer-Kontrolle im Wesentlichen sehr ähnlich, und es muss ein wirklicher Zweck gegeben sein, damit der Ansatz, den Sie beschreiben, genommen wurde. Ohne weitere Details gibt es keinen offensichtlichen Nutzen –

4

Benutzer Steuerelemente in Web-Formulare verwendet werden ... sie sind nicht als Ersatz


Bearbeiten verwendet neben der Wiederverwendung). Es kann tatsächlich mehr Overhead haben, da Seitenzyklusereignisse von der Seite an das Steuerelement übergeben werden müssen.

+0

Ich bin mir dessen bewusst - mein Punkt ist, Sie haben Seite wie Home.aspx und alles, was enthält, ist ein benutzerdefiniertes Steuerelement namens Home.ascx ... Home.aspx ist fast wie ein Wrapper ... I ' Ich versuche zu verstehen, warum dieser Ansatz insbesondere in Fällen verwendet wird, in denen keine Codewiederverwendung erforderlich ist. – Dal

+1

In diesem speziellen Beispiel gibt es keinen echten Vorteil für die Verwendung eines Web-Benutzer-Controls. Es klingt wie Masterpages wäre angemessener gewesen. –

+0

@Ed B - Das ist genau meine missliche Lage;) – Dal