suchen
HeimBackend-EntwicklungC#.Net-TutorialLösung für Fehler beim Rendern von Steuerelementen in VS2010

Beim Erstellen von Steuerelementen können leicht Fehler wie „Beim Rendern des Steuerelements ist ein Fehler aufgetreten“ und „Eine nicht behandelte Ausnahme ist aufgetreten. Der Objektverweis wurde nicht auf eine Instanz des Objekts festgelegt.“ auftreten, wie unten gezeigt: (Es kann auch einfach daran liegen, dass das Objekt nicht auf eine Instanz des Objekts gesetzt ist.) Das Setzen des runat="server"-Tags verursacht diesen Fehler, bitte überprüfen Sie diesen Punkt zuerst)
Aber zur Kompilierungszeit liegt kein Fehler vor/ Laufzeit.

Analyse
Die in der Abbildung dargestellte Situation wird als „Entwurfszeit“ bezeichnet, um sie von „Kompilierungszeit“/„Laufzeit“ zu unterscheiden.

Entwurfszeit: In der ASP.NET-Umgebung verwenden wir den Webdesigner zum Bearbeiten in Visual Studio. Das direkte Verständnis liegt vor, wenn die ASPX-Seite auf „Design“ wechselt.

Kompilierungszeit: Das direkte Verständnis ist, dass beim Kompilieren die Fehler zu diesem Zeitpunkt normalerweise Fehler sind, die durch Typprüfung, Parameterabgleich usw. verursacht werden und direkt durch Syntaxbeschränkungen begrenzt werden können.

Laufzeit: Das direkte Verständnis erfolgt, wenn Sie eine Vorschau anzeigen/ausführen. Normalerweise bestehen die Fehler zu diesem Zeitpunkt aus spezifischen Ausnahmen und logischen Fehlern.
Lassen Sie uns die Leistung des Steuerelements während des Entwurfs analysieren. VS simuliert auf intelligente Weise das Erscheinungsbild des Ausgabesteuerelements zur Laufzeit. Die Darstellung des Steuerelements durchläuft schließlich die aktuelle Ausgabe . Gemäß dem Standard sollten wir die Ausgabeoperation für das Steuerelement in Render oder RenderContents durchführen (tatsächlich sind auch andere möglich, aber wir machen das normalerweise nicht, oder mehr „Fehler beim Rendern der Steuerung“-Ausnahmen kommen hauptsächlich von Render oder RenderContents ).
Aus der Fehlermeldung „Der Objektverweis ist nicht auf eine Instanz des Objekts festgelegt.“ Dies bedeutet, dass eine oder mehrere Instanzen des Objekts ohne Zuweisung eines Anfangswerts verwendet werden.

Lassen Sie uns einen Blick auf unseren Code werfen:

protected override void RenderContents(HtmlTextWriter writer)
{
 UpButton.Text = Page.Server.HtmlDecode(UpButton.Text);
 DownButton.Text = Page.Server.HtmlDecode(DownButton.Text);
 base.RenderContents(writer);
}

Da das Steuerelement beim Entwerfen eine Aufwärts- und eine Abwärts-Taste haben muss, werden dort jeweils zwei Schaltflächen benötigt sind spezielle Satzzeichen nach oben und unten, und diese beiden Symbole müssen vom Browser korrekt gerendert werden, indem die Codenummern wie unten gezeigt festgelegt werden:

private string upButtonText = "∧";
private string downButtonText = "∨";

Und diese beiden Symbole werden vor dem Rendern angezeigt. Es wird jedoch so sein Durch eine HtmlEncode-Methode auf der Seite kompiliert und dann ausgegeben. Diese beiden Sonderzeichen können jedoch nur durch direkte Ausgabe dargestellt werden. Das heißt, nach HtmlEncode können die Sonderzeichen nur in Form von Text ∧ ∨ ausgegeben werden und Abwärtspfeile werden nicht ausgegeben. Zu diesem Zeitpunkt müssen wir die umgekehrte Methode Page.Server.HtmlDecode zum Dekodieren einführen. Beachten Sie, dass diese Instanz nur dann ungleich Null ist, wenn die Seite tatsächlich vorhanden ist , und bei einem solchen Vorgang wird der Fehler „Objektverweis nicht auf eine Instanz des Objekts festgelegt“ angezeigt.
Entwurfszeit: Wie bereits erwähnt, simuliert die Entwurfszeit nur den Prozess des Seitenrenderings und die Seite existiert nicht tatsächlich. Daher ist die Instanz des Page-Objekts zu diesem Zeitpunkt leer und nachfolgende Aufrufe lösen eine Ausnahme aus.

Angenommen, wir haben nur diese Methode, um das aktuell erforderliche Verhalten zu verarbeiten. Wenn wir Page aufrufen, führt dies definitiv zu einem Nullobjekt und führt bei nachfolgenden Vorgängen zu Ausnahmen. Zu diesem Zeitpunkt führen wir das Konzept des „Entwurfsmodus“ ein (nicht DesignPattern, sondern DesignMode ist eine geschützte Eigenschaft der Control-Klasse, die einen Wert erhält, der angibt, ob sich die Komponente derzeit im Entwurfsmodus befindet). Das Entwurfsmuster entspricht hier dem Konzept des Designs.

Damit wir den Code in die folgende Form umwandeln können:

protected override void RenderContents(HtmlTextWriter writer)
{
 if (!DesignMode)
 {
 UpButton.Text = Page.Server.HtmlDecode(UpButton.Text);
 DownButton.Text = Page.Server.HtmlDecode(DownButton.Text);
 }
 base.RenderContents(writer);
}

Auf diese Weise führen wir Instanzen des Page-Objekts nur dann ein, wenn es keine Entwurfszeit ist, also entwerfen Zeitausnahmen Es wird leicht gelöst.

Zusammenfassung

Wenn wir also ein Steuerelement entwerfen, insbesondere wenn wir die Darstellung des Steuerelements berücksichtigen, sollten wir zur Vermeidung ähnlicher Ausnahmen berücksichtigen, dass das Steuerelement genügend Ressourcen erhalten kann, z Elemente, die keine Ressourcen erhalten, sollten wir explizit unterscheiden (wie im obigen Code wird DesignMode verwendet, um zu bestimmen, ob es sich um Code handelt, der zur Entwurfszeit ausgeführt werden soll).

Erweiterung

Die Situation, die wir gerade gesehen haben, kann auf die Ausnahme zurückgeführt werden, die durch die Unfähigkeit verursacht wird, während des Entwurfs auf bestimmte Instanzen zu verweisen. Ähnliche Ausnahmen treten auch in Datenbanken auf Wenn das Dateisystem gelesen wird, ist an die Variable kein Anfangswert angehängt und es werden seitenähnliche Eigenschaften wie Session, Page.Request.QueryString usw. aufgerufen. Da einige der oben genannten Lösungen, insbesondere die für die Seite aufgerufenen zugehörigen Methoden, immer vorhanden sind, werden wir beim Entwerfen der Seite nicht oft Ausnahmen sehen. Wir sollten beim Entwerfen der Steuerelemente mehr Aufmerksamkeit schenken.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.

Weitere verwandte Artikel zu Lösungen für Fehler beim Rendern von Steuerelementen in VS2010 finden Sie auf der chinesischen PHP-Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
C# und .net: Verständnis der Beziehung zwischen den beidenC# und .net: Verständnis der Beziehung zwischen den beidenApr 17, 2025 am 12:07 AM

Die Beziehung zwischen C# und .NET ist untrennbar miteinander verbunden, aber nicht dasselbe. C# ist eine Programmiersprache, während .NET eine Entwicklungsplattform ist. C# wird verwendet, um Code zu schreiben, in .NETs Intermediate Language (IL) zu kompilieren und von der .NET -Laufzeit (CLR) ausgeführt zu werden.

Die anhaltende Relevanz von C# .NET: Ein Blick auf die aktuelle VerwendungDie anhaltende Relevanz von C# .NET: Ein Blick auf die aktuelle VerwendungApr 16, 2025 am 12:07 AM

C#.NET ist immer noch wichtig, da es leistungsstarke Tools und Bibliotheken bietet, die mehrere Anwendungsentwicklung unterstützen. 1) C# kombiniert .NET Framework, um die Entwicklung effizient und bequem zu machen. 2) Mechanismus zum Typensicherheit und Müllsammlung von C#erhöht die Vorteile. 3) .NET bietet eine plattformübergreifende laufende Umgebung und eine reichhaltige APIs, wodurch die Flexibilität der Entwicklung verbessert wird.

Vom Web zum Desktop: Die Vielseitigkeit von C# .NETVom Web zum Desktop: Die Vielseitigkeit von C# .NETApr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C# .net und die Zukunft: Anpassung an neue TechnologienC# .net und die Zukunft: Anpassung an neue TechnologienApr 14, 2025 am 12:06 AM

C# und .NET passen sich durch kontinuierliche Aktualisierungen und Optimierungen an die Bedürfnisse neuer Technologien an. 1) C# 9.0 und .NET5 Führen Sie den Datensatztyp und die Leistungsoptimierung ein. 2) .NETCORE verbessert die native und containerische Unterstützung von Cloud. 3) ASP.NetCore integriert sich in moderne Webtechnologien. 4) ML.NET unterstützt maschinelles Lernen und künstliche Intelligenz. 5) Asynchrone Programmierung und Best Practices verbessern die Leistung.

Ist C# .NET das Richtige für Sie? Bewertung seiner AnwendbarkeitIst C# .NET das Richtige für Sie? Bewertung seiner AnwendbarkeitApr 13, 2025 am 12:03 AM

C#.NetissoBableFoREenterPrise-Level Applications-WithemicrosoftCosystemDuetoitsStrongtyPing, Richlibrary, Androbustperformance.

C# Code in .NET: Erforschen des ProgrammiervorgangsC# Code in .NET: Erforschen des ProgrammiervorgangsApr 12, 2025 am 12:02 AM

Der Programmierungsprozess von C# in .NET enthält die folgenden Schritte: 1) Schreiben von C# Code, 2) Kompilieren in eine mittlere Sprache (IL) und 3), die durch die .NET -Laufzeit (CLR) ausführt. Die Vorteile von C# in .NET sind die moderne Syntax, das leistungsstarke Typsystem und die enge Integration in das .NET -Framework, das für verschiedene Entwicklungsszenarien geeignet ist, von Desktop -Anwendungen bis hin zu Webdiensten.

C# .NET: Erforschen von Kernkonzepten und ProgrammierfundamentaldatenC# .NET: Erforschen von Kernkonzepten und ProgrammierfundamentaldatenApr 10, 2025 am 09:32 AM

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft und als Teil des .NET-Frameworks entwickelt wurde. 1.C# unterstützt die objektorientierte Programmierung (OOP), einschließlich Einkapselung, Vererbung und Polymorphismus. 2. Asynchrones Programmieren in C# wird über Async implementiert und wartet auf Schlüsselwörter, um die Reaktionsfähigkeit der Anwendungen zu verbessern. 3.. Verwenden Sie LINQ, um Datensammlungen präzise zu verarbeiten. 4. Häufige Fehler umfassen Null-Referenzausnahmen und Indexausnahmen außerhalb des Bereichs. Zu den Debugging -Fähigkeiten gehört die Verwendung eines Debuggers und Ausnahmeberechnung. 5. Leistungsoptimierung umfasst die Verwendung von StringBuilder und das Vermeiden von unnötigem Packung und Unboxing.

Testen von C# .NET-Anwendungen: Einheit, Integration und End-to-End-TestTesten von C# .NET-Anwendungen: Einheit, Integration und End-to-End-TestApr 09, 2025 am 12:04 AM

Die Teststrategien für C#.NET-Anwendungen umfassen Unit-Tests, Integrationstests und End-to-End-Tests. 1. Unit -Test stellt sicher, dass die Mindesteinheit des Codes unter Verwendung des Frameworks MStest, Nunit oder Xunit unabhängig funktioniert. 2. Integrierte Tests überprüfen die Funktionen mehrerer Einheiten kombinierter, häufig verwendeten simulierten Daten und externen Diensten. 3. End-to-End-Tests simuliert den vollständigen Betriebsprozess des Benutzers, und Selen wird normalerweise für automatisierte Tests verwendet.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung