In -tptoren Erklärung ASP+ Überprüfung
Anthony Moore
Microsoft Corporation
Oktober 2000
Zusammenfassung: Detaillierte Erläuterungen zur Verwendung der ASP+ -Verifizierungs -Websteuerung.
Inhaltsverzeichnis
Kurze Einführung
Erste Schritte
Wann passiert es?
Überprüfungssequenz auf der Serverseite
Kundenüberprüfung
Effektive Regeln und nützliche Fehlerinformationen
Aktiviert, sichtbare und angezeigte Eigenschaften der Eigenschaften
CustomValidator Control
Welche Kontrollen können überprüft werden?
Ende
---------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------
Kurze Einführung
In diesem Artikel werden die Arbeitsmethode der ASP+ -Verifizierung im Detail erläutert. Wenn Sie eine komplexe Seite generieren möchten, die die Überprüfungsregelung enthält, oder das Verifizierungs -Framework erweitern, wird empfohlen, diesen Artikel zu lesen. Wenn Sie lernen möchten, die Überprüfungsregelung zu verwenden, oder zu entscheiden, ob die Überprüfungsregelung verwendet werden soll, finden Sie in "ASP+ Benutzer Eingabetaste (Englisch)".
Erste Schritte
Wir wissen, dass es wichtig ist, die Überprüfung während des gesamten ASP+ -entwicklungsprozesses zu verstehen. Schauen Sie sich die meisten kommerziellen Websites von heute an, Sie werden feststellen, dass es auf diesen Websites viele Formen gibt, die offensichtlich durch Ausführen einer großen Anzahl handgeschriebener Code ausgeführt werden. Das Schreiben von Verifizierungscode ist kein interessanter Job. Wenn Sie einen Code schreiben, um die Datentabelle anzuzeigen oder Diagramme dynamisch zu generieren, kann dies sehr attraktiv sein, aber niemand kann mit seinen Kollegen bestätigen, dass diese "coole" Methode den leeren Wert im Feld Name verbieten kann.
Aus anderen Gründen ist auch die Überprüfung der Webanwendungen sehr problematisch. HTML 3.2 hat viele Einschränkungen für den Inhalt, den Sie steuern oder Feedback vom Benutzer erhalten können einen Ton machen. Die Verwendung von Browser -Skript kann eine leistungsfähigere Überprüfung erzeugen. Diese Methode ist jedoch schwer zu bestätigen, da der Browser des Kunden nicht unbedingt ein Skript ist und böswillige Benutzer es umgehen können. Um die Sicherheit der Website zu gewährleisten, müssen daher die gleiche Inspektion des Servers durchgeführt werden.
Bei der Entwicklung von ASP+ist es unsere ursprüngliche Absicht, nur eine Steuerung zur Verarbeitung zu verwenden. Aber als es entworfen wurde, stellte ich fest, dass dieses Wunsch nicht erreicht werden konnte. Wir haben eine große Anzahl von Dateneingangsformularen untersucht, um eine Lösung zu finden, die auf möglichst viele Formen angewendet werden kann. Wir haben festgestellt, dass die Dateneingabetabelle viele interessante Funktionen aufweist:
Obwohl Fehlerinformationen oder Icons häufig an die Eingangselemente nebeneinander liegen, befinden sie sich fast immer in verschiedenen Zellen der Tabelle.
Auf der Seite gibt es oft einen Bereich, um alle Fehler zusammenzufassen.
Viele Websites enthalten Client -Skripte, um schnelleres Feedback zu geben und gleichzeitig vergeblich zu verhindern.
Viele Websites, die Client -Skripte enthalten, zeigen Informationsfelder an, wenn ein Fehler vorliegt.
Die Texteingabe wird nicht nur überprüft, sondern auch die Schaltfläche Drop -Down -Liste und Einzelauswahl wird überprüft.
Wenn ein Feld leer ist, zeigt die Website normalerweise verschiedene Informationen oder Symbole an, wenn der Eintrag ungültig ist.
Viele wirksame Prüfungen können durch häufig verwendete Ausdrücke gut ersetzt werden.
Die Überprüfung basiert normalerweise auf Vergleichsergebnissen zwischen zwei Eingaben.
90% oder mehr als 90% der Überprüfungsaufgaben sind einige gängige Operationen, z. B. den Namen des Namens oder die Postleitzahl. Die meisten Websites scheinen diese Aufgaben noch zu wiederholen.
Da der Unterschied zwischen Standorten normalerweise zu groß ist, kann eine perfekte Lösung nicht erhalten werden, um alle Überprüfungsaufgaben jeder Stelle zu erledigen.
Unter Berücksichtigung aller oben genannten Situationen umfassen die endgültigen Lösungen fünf Überprüfungsgerätesteuerungen, Validierungen -Systeme und Integration in Seitenobjekte. Gleichzeitig ist es offensichtlich, dass die Lösung erweitert werden muss und eine API erforderlich ist, um auf dem Client und dem Server zusammenzuarbeiten.
Wir fanden heraus, dass wir während der verschiedenen Forschungsüberprüfungen eine größere Toolbox benötigen. In den meisten Komponentenumgebungen wie Microsoft® ActiveX® haben wir möglicherweise versucht, die Funktionen aller Verifizierungssteuerungen in ein Steuerelement zu integrieren, um verschiedene Attribute in verschiedenen Modi zu verarbeiten. Glücklicherweise gibt es eine magische Vererbung im Microsoft® .NET -Framework.
Die meisten dieser Kontrollen werden in ihrem öffentlichen Eltern -Level -Basisvalidator implementiert. Sie können auch verschiedene Aufgaben vom Basisvalidator oder anderen Kontrollen ausführen. Selbst wenn Basisvalidator zu faul ist, um seine eigenen Textattribute zu erreichen, wird es von Labelattributen geerbt.
Wann passiert es?
Es ist sehr effektiv, die Ereignissequenz bei der Verarbeitung der Seite der Seite der Websteuerung zu verstehen. Wenn eine Überprüfungsbedingung optional ist, müssen Sie genau verstehen, wann Client und Server überprüft werden. Wenn Sie selbst eine Verifizierungsroutine schreiben möchten, ist es möglicherweise sehr zeitlich, dass sie oder Nebenwirkungen ausgestattet sind. Gleichzeitig ist es auch wichtig, den Zeitpunkt der Aufruf von Überprüfungsroutine zu verstehen.
Schauen wir uns zunächst den Server an.
Überprüfungssequenz auf der Serverseite
Es ist wichtig, die Gültigkeitsdauer der Seite zu verstehen. Wenn Sie es gewohnt sind, das Formular in den visuellen Basis- oder ähnlichen funktionalen Client -Tools zu verarbeiten, müssen Sie eine bestimmte Zeit zum Verständnis verbringen. Alle Objekte auf der Seite und Seite sind bei der Interaktion mit Benutzern nicht effektiv, obwohl dies manchmal gleich ist.
Das Folgende ist eine vereinfachte Ereignissequenz, wenn Sie zum ersten Mal eine Seite besuchen:
Erstellen Sie eine Seite und ihre Steuerung basierend auf der ASPX -Datei.
Auslösen des Ereignisses Page_load.
Seiten- und Steuerattribute werden in einem versteckten Feld gespeichert.
Seiten und Steuerelemente werden in HTML konvertiert.
Alles wegwerfen.
Wenn der Benutzer nun auf eine Schaltfläche oder eine ähnliche Steuerung klickt, kehrt er zum Server zurück und führt dann eine ähnliche Ereignissequenz aus. Diese Sequenz wird als Rücklaufsequenz bezeichnet:
Erstellen Sie eine Seite und ihre Steuerung basierend auf der ASPX -Datei.
Stellen Sie die Seite und Steuerattribute aus dem versteckten Feld wieder her.
Geben Sie die Aktualisierungsseitensteuerung gemäß dem Benutzer ein.
Auslösen des Ereignisses Page_load.
Auslösen Änderungen von Benachrichtigungsereignissen.
Seiten- und Steuerattribute werden in einem versteckten Feld gespeichert.
Seiten und Steuerelemente werden in HTML konvertiert.
Alles wieder wegwerfen.
Warum halten wir nicht alle Objekte im Speicher? Da mit ASP+ festgelegte Websites nicht die sehr große Anzahl von Benutzern verarbeiten kann. Daher behält der Speicher des Servers nur den Inhalt bei, der sofort verarbeitet wird.
Wann ist der Server -Side -Verifizierung? Wenn Sie zum ersten Mal Seiteninformationen erhalten, wird die Server -SIDE -Überprüfung überhaupt nicht durchgeführt. Die meisten Endbenutzer sind sehr ernst.
In der Rückkehrereignissequenz wird die Überprüfung zwischen Schritt 3 und Schritt 4 durchgeführt. Mit anderen Worten, die Überprüfung erfolgt nach den Datenladensteuerungsattributen des Benutzers, jedoch vor der meisten Codeausführung. Dies bedeutet, dass beim Schreiben von Benutzerereignissen normalerweise die Überprüfung verwendet werden kann. Unter normalen Umständen möchten Sie dies tun.
Der Nachteil der Überprüfung in diesem Moment lautet: Wenn Sie einige Attribute ändern möchten, die die Überprüfung durch Programmierung beeinflussen, ist es zu spät. Sie werden beispielsweise feststellen, dass Sie vor der Verarbeitung der Seite keinen Effekt sehen, wenn Sie den Code verwenden, um die Attribute der Überprüfungsregelung zu aktivieren oder zu deaktivieren, oder die Überprüfungsregelung zu ändern. Dieses Problem kann durch die folgenden zwei Methoden vermieden werden:
Ändern Sie das Attribut vor Überprüfung.
Überprüfen Sie die Steuerung nach der Attributänderung.
Beide Methoden müssen effektive Verifizierungsattribute und -methoden auf dem Seitenobjekt verwenden.
Page -API
Seitenobjekte enthalten einige wichtige Attribute und Methoden, die sich auf die Server -Side -Überprüfung beziehen. Tabelle 1 fasst diese Attribute und Methoden zusammen:
Tabelle 1. Die Attribute und Methoden des Seitenobjekts
Attribut oder Methode Beschreibung
Das Isvalid -Attribut ist das nützlichste Attribut. Dieses Attribut kann überprüfen, ob das gesamte Formular effektiv ist. Diese Überprüfung wird normalerweise vor der Aktualisierung der Datenbank durchgeführt. Nur alle Objekte der Validatoren sind gültig, das Attribut ist wahr und der Wert wird nicht im Cache gespeichert.
Validatoren schreibt die Erfassung aller Verifizierungsobjekte dieser Seite zu. Dies ist eine Sammlung von Objekten, die die Ivalidator -Schnittstelle implementieren.
Die Wertungsmethode ruft bei der Überprüfung eine Methode auf. Die Standardausführungsmethode auf dem Seitenobjekt besteht darin, sich jedem Überprüfungsgerät zu wenden und das Überprüfungsgerät selbst zu bewerten.
Die Validators -Sammlung ist für viele Aufgaben sehr nützlich. Dieser Satz ist eine Sammlung von Objekten, die die Ivalidator -Schnittstelle implementieren. Der Grund, warum ich das Objekt verwende, ist nicht die Kontrolle des Steuerelements, da das Seitenobjekt nur auf die Ivalidator -Schnittstelle achtet. Da alle Überprüfungen normalerweise verwendet werden, um einige visuelle Steuerelemente von Ivalidator zu erreichen, sollte jeder in der Lage sein, ein beliebiges Verifizierungsobjekt zu verwenden und das Verifizierungsobjekt zur Seite hinzuzufügen.
Die Ivalidator -Schnittstelle enthält die folgenden Attribute und Methoden:
Tabelle 2. Die Attribute und Methoden der Ivalidator -Schnittstelle
Attribut oder Methode Beschreibung
Das Isvalid -Attribut wies darauf hin, ob der durch ein separate Verifizierungsobjekt durchgeführte Validitätstest bestanden wurde. Sie können den Wert nach der Überprüfung manuell ändern.
Das ErrorMessage -Attribut führt den Fehler ein, um das zu überprüfende Objekt und die Fehler, die dem Benutzer angezeigt werden können, zu überprüfen.
Die Validierungsmethode wird auf die Gültigkeit des Verifizierungsobjekts überprüft, um den Isvalid -Wert zu aktualisieren.
Sie können diese Schnittstelle verwenden, um einige interessante Aufgaben auszuführen. Verwenden Sie beispielsweise den folgenden Code (z. B. das in C#gezeigte Beispiel), um die Seite auf einen effektiven Zustand zurückzusetzen:
Ivalidatorwert;
Foreach (val in validatoren) {
valueValid = true;
}
Verwenden Sie den folgenden Code, um die gesamte Verifizierungssequenz erneut auszusetzen:
Ivalidatorwert;
Foreach (val in validatoren) {
Val.Validate ();
}
Wenn Sie eine Beta -1 -Ausgabe oder höhere Versionen haben, können Sie auch die Wertungsmethode für das Seitenobjekt aufrufen, damit die gleiche Aufgabe erledigt werden kann. Um vor der Überprüfung einige Änderungen vorzunehmen, kann die Wertschöpfungsmethode abgedeckt werden. In diesem Beispiel wird eine Seite angezeigt, die das Überprüfungsgerät enthält, das gemäß dem Wert des Kontrollkästchen geöffnet oder ausgeschaltet wird:
Öffentliche Klasse Bedingung: Seite {
public htmlinputcheckbox kkssamaseas;
Public ResearchfieldValidator RfvalshipAddress;
Protected Override void validate () {) {)
// Überprüfen Sie einfach die Lieferadresse (wenn sich von der Zahlungsadresse unterscheidet)
Bool Enableship =!
rfvalshipAddress.Enabled = Enableship;
// Jetzt die Überprüfung durchführen
Base.Validate ();
}
}
Kundenüberprüfung
Wenn Ihre Seite durch Client -Überprüfung aktiviert ist, tritt während der Hin- und Rückfahrt eine völlig andere Ereignissequenz auf. Die Überprüfung des Clients verwendet den Client JScript®. Die Überprüfung erfordert keine binären Komponenten.
Obwohl die Standardisierung der Jscript -Sprache gut gemacht ist, hat das in der HTML -Dokumentation im Browser (DOM) verwendete Dokumentobjektmodell (DOM) keine weit verbreiteten Standards. Daher wird die Kundenüberprüfung nur in den Internet Explorer 4.0 und höheren Versionen durchgeführt, da das verifizierte Objekt der Internet Explorer DOM ist.
Aus der Perspektive des Servers bedeutet die Überprüfung des Clients nur, dass die Überprüfungsregelung unterschiedliche Inhalte an HTML sendet. Zusätzlich ist die Vorfallsequenz genau die gleiche. Der Server -Side -Check wird weiterhin durchgeführt. Obwohl es überflüssig erscheint, ist es sehr wichtig, weil:
Einige Überprüfungskontrollen unterstützen das Client -Skript möglicherweise nicht. Es gibt ein gutes Beispiel: Wenn Sie gleichzeitig die Funktionen für CustomValidator- und Serverüberprüfungen verwenden möchten, gibt es jedoch keine Client -Überprüfungsfunktion.
Sicherheitsvorkehrungen. Einige Leute können leicht eine Seite mit einem Skript erhalten und dann die Seite deaktivieren oder ändern. Sie sollten Ihr Skript nicht verwenden, um zu verhindern, dass schlechte Daten in Ihr System eingeben, sondern nur, damit Benutzer schnelleres Feedback erhalten. Wenn Sie CustomValidator verwenden möchten, sollten Sie daher keine Client -Überprüfungsfunktion angeben, ohne dass die Überprüfungsfunktionen der Server entsprechend sind.
Jede Überprüfungsregelung kann sicherstellen, dass ein Standard -Client -Skriptblock an die Seite gesendet wird. Tatsächlich ist dies nur ein kleiner Teil des Codes, der einen Verweis auf den Code in der Skriptbibliothek webuivalidation.js enthält. Diese Skriptbibliotheksdatei enthält alle vom Client verifizierten Logik.
Über Skriptbibliothek
Da sich die Überprüfung des Web -Kontrollskripts in der Skriptbibliothek befindet, ist der von allen Clients verifizierte Code nicht erforderlich, um ihn direkt an die Seite zu senden, obwohl er an der Oberfläche erfolgt. Die Hauptreferenzen der Hauptskriptdatei ähneln Folgendes:
<script Language = JavaScript
src =/_ Aspx/1.0.9999/script/webuivalidation.js> </script>
Standardmäßig wird die Skriptdatei im Standard -Root -Verzeichnis im _aspx -Verzeichnis installiert und verwendet einen aufgerufenen Anweisungsanweis, das mit einer positiven diagonalen Linie beginnt. Die Referenz zeigt, dass jedes einzelne Objekt nicht die Skriptbibliothek einbeziehen muss und alle Seiten auf demselben Computer dieselbe Datei verweisen können. Sie werden feststellen, dass es auf diesem Pfad auch eine Versionsnummer der öffentlichen Sprache gibt, damit verschiedene Laufzeitversionen auf demselben Computer ausgeführt werden können.
Wenn Sie sich Ihr Standard -Virtual Root -Verzeichnis ansehen, finden Sie die Datei und den Inhalt anzeigen. Die Position dieser Dateien ist in der Datei config.web angegeben. Config.web -Datei ist eine XML -Datei für die meisten ASP+ -Inneneinstellungen. Das Folgende ist die Definition der Position in dieser Datei:
<Webcontrols
ClientscriptsLocation =/_ Aspx/{0}/script/
/>
Ermutigen Sie Sie, das Skript zu lesen, damit Sie die Ereignisse, die ausführlich auftreten, verstehen können. Es wird jedoch empfohlen, diese Skripte nicht zu ändern, da ihre Funktionen eng mit bestimmten Laufzeitversionen verknüpft sind. Wenn die Version aktualisiert wird, müssen diese Skripte möglicherweise auch entsprechend aktualisiert werden. Wenn bestimmte Projekte geändert werden müssen, sichern Sie zuerst diese Skripte und richten Sie Ihr Projekt auf die Sicherungsdatei hin, die Methode besteht darin, eine private config.Web -Datei zu verwenden, um die Position dieser Dateien zu ersetzen. Wenn die Zeichenfolge die Formatanweisung {0} enthält, ersetzt die Versionsnummer die Anweisung, wenn die Laufzeitversionsnummer ersetzt wird. Es ist am besten, diese Position in eine relative Referenz oder absolute Referenz zu ändern.
Deaktivieren Sie die Kundenüberprüfung
Manchmal möchten Sie Kunden möglicherweise nicht überprüfen. Wenn die Anzahl der Eingabefelder gering ist, ist die Client -Überprüfung möglicherweise nicht sehr nützlich. Schließlich müssen Sie eine Logik haben, die jedes Mal einen Rund -Trip -Server erfordert. Sie werden feststellen, dass sich die dynamischen Informationen über den Kunden negativ auf Ihr Layout auswirken.
Verwenden Sie zur Deaktivierung der Client -Überprüfung die Seite "Anweisungen" clientTarget = Downlevel. Diese Anweisung ähnelt dem Beginn der ASPX -Datei:
< %@Page Language = C# ClientTarget = Downlevel %>
Der Standardwert dieser Anweisung ist automatisch und zeigt an, dass Sie nur den Client der Microsoft Internet Explorer 4.0 oder höher verifizieren.
Hinweis: Leider ist in Beta 1 diese Anweisung nicht nur zur Überprüfung deaktiviert, und gleichzeitig verwenden alle Web -Steuerelemente HTML 3.2 -Tags zum Verarbeiten, was möglicherweise unerwartete Ergebnisse erzielt. Die endgültige Version bietet eine bessere Möglichkeit, dieses Problem zu kontrollieren.
Client -Ereignissequenz
Diese Sequenz ist eine Ereignissequenz, die auftritt, wenn die Seite die Client -Überprüfung enthält:
Beim Laden des Browsers auf der Seite müssen Sie jede Überprüfungsregelung initialisieren. Diese Steuerelemente werden als <Pan> -Marke gesendet, und ihre HTML -Funktionen sind den Funktionen auf dem Server am nächsten. Am wichtigsten ist, dass alle Eingabelemente, auf die das Verifizierungsgerät verwiesen wird, zu diesem Zeitpunkt "gehängt" werden. Das referenzierte Eingabeelement ändert sein Client -Ereignis, um die Überprüfungsroutine beim Eingeben der Änderung aufzurufen.
Der Code in der Skriptbibliothek wird ausgeführt, wenn der Benutzer die Registerkarte Taste verwendet, um zwischen jedem Feld zu wechseln. Wenn ein bestimmtes unabhängiges Feld geändert wird, werden die Überprüfungsbedingungen revaluiert und das Überprüfungsgerät bei Bedarf sichtbar oder unsichtbar.
Wenn der Benutzer versucht, das Formular einzureichen, werden alle Überprüfungen bewertet. Wenn all diese Verifizierungen wirksam sind, wird das Formular an den Server übermittelt. Wenn an einem oder mehreren Stellen ein Fehler vorliegt, tritt die folgende Situation auf:
Die Einreichung wurde abgesagt. Das Formular wird nicht an den Server übermittelt.
Alle ungültigen Überprüfungen sind sichtbar.
Wenn eine Überprüfungszusammenfassung ShowSummary = true enthält, werden alle Fehler aus der Überprüfung der Überprüfung erfasst und der Inhalt mit diesen Fehlern aktualisiert.
Wenn eine Überprüfungszusammenfassung ShowMessageBox = true enthält, sammelt sie Fehler und zeigt diese Fehler im Informationsfeld des Clients an.
Da die Client -Überprüfungsregelung durchgeführt wird, wenn die Client -Überprüfungsregelung bei jeder Eingabeänderung oder bei der Übermittlung durchgeführt wird, werden diese Überprüfungskontrollen normalerweise zweimal oder mehr als zweimal auf dem Client bewertet. Bitte beachten Sie, dass diese Überprüfungssteuerungen nach der Einreichung weiterhin auf dem Server revaluiert werden.