2009-06-01 12 views
7

Ich frage mich, ob jemand Erfahrung damit hat, Benutzersteuerelemente in Websteuerelemente zu konvertieren?Benutzersteuerelemente in Serversteuerelemente konvertieren

Idealerweise möchte ich einige der Entwurfsarbeiten an andere abladen, die mir schön angelegte Benutzerkontrollen geben würden. Dann könnte ich den Prozess des Konvertierens, Kompilierens, Testens und Deployens durchlaufen.

Bis MS mit der magischen Option "Convert to Server Control" auftaucht, sieht es so aus, als ob ich ziemlich gut damit beschäftigt wäre, von Grund auf neu zu schreiben. Irgendwelche Ideen?

+0

Was wäre bei der Verwendung der Benutzersteuerelemente falsch? Wenn Sie Logik gemeinsam nutzen müssen, könnten Sie die .ascx-Dateien von einer Basisklasse erben, die Sie in einer Klassenbibliothek definieren, sodass die Logik problemlos wiederverwendet werden kann. unter Beibehaltung eines flexiblen visuellen Designs, das leicht geändert werden kann. – driis

+0

Ich suchte stundenlang und versuchte viel. Die einzige Sache, die für mich funktionierte, war dieser Artikel https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/. Es sagt "in sich geschlossen" mit gegebenen Einschränkungen. Ich habe ein 'WebSite'-Projekt verwendet und musste den Code hinterher in die ascx-Datei einbinden. Im Grunde habe ich nur eine einzige Datei für die Benutzersteuerung übrig. – djmj

Antwort

6

Gibt es einen Grund, warum Sie diese Benutzersteuerelemente zu Serversteuerelementen konvertieren müssen? Denken Sie daran, dass es möglich ist, compile a user control into an assembly.

+0

Auch http://msdn.microsoft.com/en-us/library/aa479318.aspx – Loofer

+0

Web-Archiv (aufgrund der Offline-Website): http://web.archive.org/web/20120328081058/http://www .nathanlevins.com/2008/06/kompilieren-ein-web-benutzer-steuerung-in-a-dll-net-c / – Caramiriel

1

Sie haben recht, es gibt keine magische Kugel hier, aber da Sie bereits eine Benutzerkontrolle haben, ist es nicht so schwierig.

  1. Sicherstellen, dass alle Eigenschaften, Ereignisse, etc. sind in der Code-behind gesetzt, da Sie keine Auszeichnungs haben, wenn Sie
  2. Erstellen Sie einen neuen Server Control
  3. alle Paste des fertig sind Ereignisbehandlung und Objektcode in die neue Steuerungseinstellung
  4. Überschreibung der Render-Methode für jedes Kind Rufsteuerung der Render Methode in dem mitgelieferten Htmltextwriter Passieren

    protected override void Render(HtmlTextWriter writer) 
    { 
        TextBox box = new TextBox(); 
        //Set all the properties here 
        box.RenderControl(writer); 
        base.Render(writer); 
    } 
    
0

Ich suchte stundenlang und fand viele Blogs darüber.

Das einzige, was für mich funktionierte, war dieser Artikel https://blogs.msdn.microsoft.com/davidebb/2005/10/31/turning-an-ascx-user-control-into-a-redistributable-custom-control/.

Es sagt in sich abgeschlossen mit bestimmten Einschränkungen, aber es erwähnt nicht, dass der Codebehind in ascx Datei enthalten sein muss.

Ich benutzte Projekt eine Web-Site (nicht Webanwendung!) Und musste inline der Code hinter in die ascx Datei und nur Steuerrichtlinie verwenden wie:

<%@ Control Language="C#" ClassName="MyPackage.MyControl"%> 

Ich habe so im Grunde nur eine einzige Datei für das Benutzersteuerelement übrig. Wenn Codebehind eine separate Datei war, waren alle Controls null, wenn ich auf die letzte DLL referenzierte.

Ich versuchte auch http://blog.janjonas.net/2012-04-06/asp_net-howto-user-control-library-compile-dll-file, aber mit Reflektion konnte die Ascx-Datei nicht gefunden werden.

Verwandte Themen