3 Stimmen

Fehler beim Erstellen der Steuerung - Benutzerdefinierte Steuerung

Ich habe eine benutzerdefinierte Steuerung und sie funktioniert gut...nur kann die Steuerung nicht zur Entwurfszeit gerendert werden. (Ich benutze VS 2008)

Ich denke, viele Leute, die benutzerdefinierte Steuerelemente entwickeln, haben dieses Problem...Der Fehler, den ich bekomme, ist "Fehler beim Erstellen des Steuerelements - NameDesBenutzerdefiniertenSteuerelements" Verweis auf ein Objekt nicht festgelegt.

Ich möchte eine Lösung finden oder zumindest das debuggen...(Da dies ein Problem zur Entwurfszeit ist, wie kann ich das debuggen?)

Ich habe versucht, if(!DesignMode) Code in den Methoden OnInit, OnPreRender, RenderContents, CreateChildControls (Ich schieße nur ins Blaue)...

Hilfe bitte. Ich hoffe wirklich, dass dies kein VS-Bug ist!

1 Stimmen

Hast du einen parameterlosen Konstruktor für deine benutzerdefinierte Steuerelement?

1voto

Glenn Slaven Punkte 32691

BFree's Kommentar ist wahrscheinlich das Hauptproblem, damit ein Steuerelement im Design-Modus angezeigt wird, benötigt es einen parameterlosen Konstruktor, da der Designviewer nicht weiß, wie Sie normalerweise das Steuerelement instanziieren würden.

Falls Sie einen parameterlosen Konstruktor haben, können Sie etwas Code einfügen, um zu zeigen, was passiert?

0voto

KMessenger Punkte 81

Wie Glenn erwähnt hat, könnte das erste Problem darin bestehen, dass kein parameterloser Konstruktor vorhanden ist.

Das zweite Problem könnte sein, dass Sie Methoden während des OnLoad oder anderer Methoden aufrufen, die Parameter enthalten, die nicht initialisiert sind, oder dass Sie versuchen, Datenbankabfragen usw. durchzuführen, die normalerweise zur Laufzeit durchgeführt werden.

Es sei denn, sie haben diesen Fehler kürzlich behoben* und ich habe es nicht mitbekommen, zu beachten ist, dass die DesignMode-Eigenschaft für die ersten und zweiten Ebenen von verschachtelten Steuerelementen funktioniert, aber normalerweise darüber hinaus nicht richtig funktioniert. (Zum Beispiel funktioniert das DesignMode auf dem Formular und [1] für ein UserControl[1], das ein anderes UserControl[2] enthält, nicht auf [2]).

Auch um Glenn zuzustimmen, wird es hilfreich sein, etwas vom Code zu sehen.

*Nach meiner sehr aktuellen Erfahrung mit der Arbeit mit verschachtelten Benutzersteuerelementen wurde dies nicht behoben.

0voto

Glenn Slaven Punkte 32691

In Ihren Methoden OnPreRender & CreateChildControls wird ein Aufruf an diese Seite gemacht. Möglicherweise möchten Sie versuchen, sie in einen

if (this.Page != null)
{
.....
}

zu wickeln, da ich nicht denke, dass Sie zu diesem Zeitpunkt ein Page-Objekt haben und ich ziemlich sicher bin, dass PreRender und CreateChildControls im Designansicht aufgerufen werden. Ich habe jedoch schon länger keine benutzerdefinierten Serversteuerelemente mehr geschrieben, daher könnte ich falsch liegen (habe in letzter Zeit mit MVC gearbeitet).

0voto

Glenn, Der Fehler, den du bekommst, ist ein VS-Bug und es wurde noch keine Lösung veröffentlicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X