Client -API
Es gibt eine kleine API, die für den Client verwendet werden kann, um verschiedene Effekte in Ihrem eigenen Client -Code zu erzielen. Da einige Routine nicht versteckt werden können, können Sie theoretisch den Kunden verwenden, um alle vom Client definierten Variablen, Merkmale und Funktionen zu überprüfen. Viele von ihnen können jedoch geändert werden. Das Folgende fasst das Kundenobjekt zusammen, das Sie zur Verwendung ermutigen.
Tabelle 3. Client -Objekt
Namenstyp Beschreibung
Page_isvalid boolean variable wies darauf hin, ob die Seite derzeit gültig ist. Überprüfen Sie die Skripte, die die Variable immer am neuesten halten.
Page_validator Element Array Dies ist ein Array, das alle Überprüfungen auf der Seite enthält.
Page_validationactive boolesche Variablen geben an, ob sie überprüft werden sollen. Stellen Sie diese Variable auf False ein, kann durch Programmierung geprüft werden.
Isvalid Boolen Attribute Jedes Client -Überprüfungsgerät verfügt über die Eigenschaft, in der darauf hingewiesen wird, ob das Überprüfungsgerät derzeit gültig ist. Bitte beachten Sie, dass dieses Attribut in der PDC -Version mit isvalid gemischt wird.
Umgehung der Kundenüberprüfung
Eine Aufgabe, die Sie häufig ausführen müssen, ist das Hinzufügen der Schaltfläche "Abbrechen" oder Navigation auf der Seite. In diesem Fall möchten Sie auch dann auch, wenn auf der Seite Fehler auf der Seite sind, die Schaltfläche auch verwenden, um die Seite einzureichen. Da das Client -Taste Onclick -Ereignis vor dem ONSUBMIT -Ereignis des Formulars erfolgt, kann es vermeiden, eine Inspektion und Umgehung der Überprüfung einzureichen. Im Folgenden wird angezeigt, wie die HTML -Bildsteuerung als "Abbrechen" -Taste verwendet wird, um die Aufgabe zu erledigen:
<Eingabe type = Bild runat = Server
Wert = Abbrechen
Onclick = page_validationactive = false;
ONSERVERCLIGHT = CMDCANCEL_CLICK>
Verwenden Sie die Schaltfläche oder das ImageButton -Steuerelement, um eine Verwirrung auszuführen, da das Onclick -Ereignis davon ausgeht, dass es sich um ein Server -Ereignis mit demselben Namen handelt. Sie sollten dieses Ereignis im Client -Skript festlegen:
<ASP: ImageButton Runat = Server ID = Cmdimgcancel
AlternateText = Abbrechen
Onclick = cmdcancel_click/>
<Skript Sprache = JavaScript>
document.all [cmdimgcancel] .onclick =
neue Funktion (page_validationactive = false;);
</script>
Eine andere Methode zur Lösung dieses Problems besteht darin, bestimmte Einstellungen der Schaltfläche "Abbrechen" so festzulegen, dass das Einreichungsereignis bei der Rückkehr nicht das Einreichungsereignis ausgelöst wird. HTMlinputbutton- und Linkbutton -Kontrollen sind die Beispiele.
Spezialeffekt
Eine weitere häufige Anforderung besteht darin, dass zusätzlich zu Fehlerinformationen, die vom Überprüfungsgerät selbst angezeigt werden, einige andere Effekte benötigt werden. In diesem Fall muss eine Änderung, die Sie vornehmen, gleichzeitig auf dem Server oder Client durchgeführt werden. Angenommen, Sie müssen ein Etikett hinzufügen, um die Farbe zu ändern, je nachdem, ob die Eingabe gültig ist. Im Folgenden wird diese Aufgabe auf dem Server implementiert:
Öffentliche Klasse ChangeColorPage: Seite {
Public Label LBLZIP;
öffentliche RegulaxpressionValidator -Wert;
Protected Override void Overad (eventArgs e) {{{{{{{{
LBLZIP.FORECOLOR = VALZIP.ISVALID?
}
}
Alle oben genannten Methoden sind perfekt, aber solange Sie die obige Überprüfung ändern, werden Sie feststellen, dass es sehr inkonsistent aussieht, wenn Sie dieselbe Operation auf dem Client ausführen. Mit dem Überprüfungsframework können Sie viele solche doppelten Effekte vermeiden, aber es kann nicht andere Effekte vermeiden, die Sie gleichzeitig auf Client und Server erzielen müssen. Das Folgende ist ein Fragment, das dieselbe Aufgabe im Client ausführt:
<ASP: Etikett ID = LBLZIP RUNAT = Server
text = sottescode:/>
<ASP: Textbox ID = TXTIZIP RUNAT = Server
onchange = txtZiponChange ();
<ASP: regelmäßigxpressionValidator ID = Valzip Runat = Server
ControlToValidate = txtZIP
ErrorMessage = Ungültige Postkodex
ValidationXpression = [0-9] {5} /> <br>
<Skript Sprache = JavaScript>
Funktion txtziponchange () {{) {
// Wenn sich die Client -Überprüfung nicht in der Aktivität befindet, führt sie keinen Betrieb aus
IFOF (page_validators) == undefiniert) return;
// Ändern Sie die Farbe des Etiketts
LBLZIP.Style.Color = Valzip.isvalid?
}
</script>
Beta 1 Client -API
Für die Beta 1 -Ausgabe werden einige Funktionen, die aus dem Client -Skript aufgerufen werden können, andere Situationen verursachen.
Tabelle 4. Funktion vom Client -Skript -Anruf
Name Beschreibung
ValidatorValidat (VAL) verwendet ein Client -Verifizierungsgerät als Eingabe. Lassen Sie das Überprüfungsgerät die Eingabe überprüfen und die Anzeige aktualisieren.
Validierable (val, aktivieren) erhalten Sie ein Client -Überprüfungsgerät und einen booleschen Wert. Aktivieren oder deaktivieren Sie das Client -Überprüfungsgerät. Wenn es deaktiviert ist, wird das Client -Überprüfungsgerät nicht bewertet und der Client -Validator ist immer gültig.
ValidatorHookupControl (Steuerung, VAL) erhielt ein Eingangs -HTML -Element und ein Client -Überprüfungsgerät. Ändern oder erstellen Sie das Änderungsereignis des Elements, damit das Überprüfungsgerät während der Änderung aktualisiert werden kann. Diese Funktion eignet sich für angepasste Überprüfungen basierend auf mehreren Eingangswerten.
Sein besonderer Zweck ist es, das Verifizierungsgerät zu aktivieren oder zu deaktivieren. Wenn Sie überprüfen möchten, ob Sie nur unter bestimmten Umständen wirksam werden, müssen Sie möglicherweise den Aktivierungsstatus gleichzeitig auf dem Server und den Clients ändern. Andernfalls werden Sie feststellen, dass der Benutzer die Seite nicht einreichen kann.
Das folgende Beispiel sowie ein Feld.
Öffentliche Klasse Bedingung: Seite {
public htmlinputcheckbox kkssamaseas;
Public ResearchfieldValidator RfvalshipAddress;
Protected Override void validate () {) {)
Bool Enableship =!
rfvalshipAddress.Enabled = Enableship;
Base.Validate ();
}
}
Das Folgende ist der Code des Client -Äquivalents:
<Eingabetyp = CheckBox Runat = Server ID = ChkSameas
Onclick = onchangesameas ();> Das Gleiche wie die Zahlungsadresse <br>
<Skript Sprache = JavaScript>
Funktion onchangeSameas () {
var Endeship =!
Validatorableable (rfvalshipAddress, Enableship);
}
</script>
Effektive Regeln und nützliche Fehlerinformationen
Jedes Verifizierungsgerät zeigt spezifische Fehlerinformationen zu bestimmten Bedingungen in bestimmten Steuerelementen an. Es gibt einige Regeln, die bestätigen, ob es gültig ist.
Alle leeren Überprüfungen (mit Ausnahme des erforderlichen Fieldvalidators) werden als gültig angesehen. Wenn ein leerer Wert ungültig ist, benötigen Sie normalerweise einen erforderlichen FieldValidator und einen anderen Verifizierer. Sie müssen dies tun, denn im Allgemeinen möchten Sie immer verschiedene Fehlerinformationen zum leeren Überprüfungsgerät und zur Effektivität anzeigen. Sie können auch unklare Informationen verwenden, z. B. "Sie müssen einen Wert eingeben, und dieser Wert muss zwischen 1 und 10 liegen".
Ein weiterer spezieller Regeln, der verwendet wird, wenn das Eingabefeld nicht in einen angegebenen Datentyp konvertiert werden kann, bezieht sich auf den Vergleichevalidator und den RangeValidator. Der Validitätsbewertungsprozess des Vergleichsvalidators von ControlTocompare gibt an, dass der nachstehend beschriebene Prozess der Gültigkeitsbewertung angezeigt wird:
Wenn das von ControlToVovalidat verwiesene Eingangsfeld leer ist, ist es effektiv.
Wenn das von ControlToVovalida verwiesene Eingangsfeld nicht in den erforderlichen Datentyp konvertiert werden kann, ist es ungültig.
Wenn das von ControlTocompare verwiesene Eingangsfeld nicht in den erforderlichen Datentyp konvertiert werden kann, ist es gültig.
Das Eingangsfeld wird in den erforderlichen Datentyp konvertiert und vergleicht.
Der dritte Schritt sieht etwas inkonsistent aus. Der Grund dafür ist, dass wenn das Verifizierungsgerät gleichzeitig die Wirksamkeit mehrerer Felder überprüft, schwierig ist, aussagekräftige Fehlerinformationen für das Verifizierungsgerät zu schreiben. Ein unabhängiges Überprüfungsgerät sollte verwendet werden, um die Fehlersituation im Feld ControlToCompare -Eingabe zu melden. Der Rangevalidator hat ähnliche Arbeitsmethoden mit maximalen und minimalen Eigenschaften.
Aktiviert, sichtbare und angezeigte Eigenschaften der Eigenschaften
Der Unterschied zwischen aktivierten, sichtbaren und angezeigten Eigenschaften des Verifizierungsgeräts ist möglicherweise nicht sehr offensichtlich.
Display = None kann verwendet werden, um anzugeben, dass das Überprüfungsgerät keinen direkten Inhalt anzeigt, aber dennoch bewertet, weiterhin die Gesamteffektivität beeinflusst und immer noch Fehler in der Zusammenfassung des Clients und des Servers einfügen kann. Für die Client -Überprüfung werden diese Werte für die Verwendung der sichtbaren Stilmerkmale oder zur Verwendung der Merkmale der Anzeigestil zum Öffnen oder Schließen des Verifizierungsgeräts bestimmt. Für die Server -SIDE -Überprüfung bedeutet Display = dynamisch, dass die Eingabe keinen Inhalt anzeigt, wenn die Eingabe gültig ist, und Display = static repräsentiert einen Speicherplatz, der sich nicht ändert (). Die letzte Einstellung soll in keinen Inhalt gefaltet werden, wenn die Zelle, die nur das Überprüfungsgerät in der Tabelle enthält, gültig ist.
Warum verwenden Sie nicht nur Sactable = False, um das Verifizierungsgerät sichtbar zu machen? In ASP+hat das sichtbare Attribut der Steuerung viele Bedeutungen: Die Kontrolle von sichtbar = false wird überhaupt nicht verarbeitet oder überhaupt angezeigt. Aus dieser Bedeutung bedeutet das Sichtbare = Falsch des Verifizierungsgeräts, dass nicht nur kein Inhalt angezeigt, sondern auch nicht verwendet werden kann. Dieses Verifizierungsgerät wird nicht bewertet, die Gültigkeit der Seite nicht beeinflusst und es auch nicht in die Zusammenfassung gestellt.
Aktiviert ist neutral. In den meisten Fällen ist der Effekt von aktiviert = falsch und sichtbar = Falsch ist genau der gleiche. In der Beta 1 -Ausgabe oder einer höheren Version gibt es einen wichtigen Unterschied: Bei der Client -Überprüfung wird das deaktivierte Überprüfungsgerät weiterhin an den Browser gesendet, es befindet sich jedoch in einem deaktivierten Zustand. Sie können die validatorable Funktion im Client -Skript verwenden, um das Verifizierungsgerät zu aktivieren.
Achten Sie bei der Verwendung von sichtbar oder aktiviert, um zu steuern, ob dies überprüft werden soll, auf die Bestellung auf dem obigen Server. Oder ändern Sie vor der Überprüfung oder achten Sie nach der Änderung erneut. Andernfalls spiegeln ihre Isvalidwerte keine Änderungen der Attribute wider.
CustomValidator Control
Der einfachste Weg, um das Verifizierungsrahmen zu erweitern, besteht darin, die CustomValidator -Steuerung zu verwenden. Diese Steuerung kann verwendet werden, um Überprüfungen durchzuführen, dass andere Überprüfungssteuerungen nicht durchgeführt werden können. Sie können jedoch auch Überprüfungen ausführen, die auf Informationen auf dem Server zugreifen müssen (z. B. Datenbanken oder Webdienste).
Wenn der CustomValidator mit nur einer Serverüberprüfungsfunktion hinzugefügt wird, werden Sie feststellen, dass das Verifizierungsgerät nicht an der Client -Überprüfung teilnimmt. Wenn der Benutzer mit der Registerkarte Taste zwischen jedem Feld wechselt, wird der CustomValidator nicht aktualisiert und der Runde -Strip -Server muss seine Überprüfung gleichzeitig durchführen. Wenn Sie den CustomValidator verwenden möchten, um eine Prüfung durchzuführen, für die keine Informationen auf dem Server erforderlich sind, können Sie auch die ClientValidationFunction -Eigenschaft verwenden, um das Überprüfungsgerät vollständig an der Client -Überprüfung beteiligt zu haben. Angenommen, Sie bieten eine ClientValidationfunction. Tatsächlich ist es jedoch nur ein Teil der Überprüfung. Die Überprüfung der Client -Überprüfungsfunktion überschreitet die Überprüfung der Ausführung auf dem Server nicht, da Hacker die Überprüfungsfunktion einfach umgehen können.
Das Folgende ist ein einfaches Beispiel für die Verwendung von CustomValidator auf dem Client und Server. Überprüfen Sie nur, ob die Eingabe gerade ist. Lassen Sie uns die Serverfunktion (in C#) vorstellen:
{Partialive Service) {Position
versuchen {
int i = int.fromstring (Wert);
Return ((i % 2) == 0);
} Fangen {
False zurückgeben;
}
}
Das Folgende ist die Deklarationsmethode der Funktion im Client und eine Client -Überprüfungsfunktion, die dieselbe Überprüfung durchführt. Dies ist normalerweise ein JSCript -Formular. Wenn Ihr Ziel jedoch Microsoft® Internet Explorer ist, können Sie auch VBScript® -Formular verwenden.
<ASP: CustomValidator ID = CustomVal2 Runat = Server
ErrorMessage = Zahlen können nicht entfernt werden!
ContrelEdalidate = txtCustomData
OnservalidationFunction = ServerValidation
clientValidationFunction = schätzt /> <br>
Datenfeld: <ASP: Textbox -ID = txtCustosData Runat = Server />
<Skript Sprache = JavaScript>
<!-
Funktion Checkkeven (Quelle, Wert) {{{{
var value = parseInt (Wert, 10);
if (isnan (val))
False zurückgeben;
Return ((Val % 2) == 0);
}
//->
</script>
Hier sind einige Vorsichtsmaßnahmen mit CustomValidator:
Ähnlich wie bei allen anderen Überprüfungskontrollen (mit Ausnahme des erforderlichen FieldFieldValidators) wird in der leeren Eingabefeld angenommen, dass der CustomValidator wirksam ist.
Wenn der ältere Browser verwendet wird oder die Client -Überprüfung geschlossen ist, kann die Client -Überprüfungsfunktion nicht aufgerufen werden. Bevor Sie die Funktion definieren, müssen Sie die Funktion des im Browser verwendeten Browsers nicht überprüfen. Sie müssen jedoch sicherstellen, dass der Browser aufgrund der Definition keine Skriptfehler verursacht. Stellen Sie sicher, dass Sie Ihren Client -Code als Annotation von HTML erstellen, wie im folgenden Beispiel gezeigt.
Zwei Parameter werden an Ihre Client -Funktion übergeben und entsprechen den an die Serverfunktion übergebenen Parametern. Das erste ist das Element des Client -Überprüfungsgeräts, und der zweite ist der vom ControlToVovalidat angegebene Steuerwert. Auf dem Client können Sie jedoch entscheiden, Parameter für die Funktion nicht zu definieren, die normal funktionieren.
Wenn Sie Beta1- oder höhere Versionen verwenden, können Sie den Kontrolltovalidat als leer halten. In diesem Modus löst die Serverfunktion immer eine runde Rip -Round -Reise aus, und die Client -Funktion wird immer jedes Mal ausgelöst, wenn Sie versuchen, sie einzureichen. Mit dieser Funktion können Sie die Steuerelemente überprüfen, die andere Methoden nicht überprüfen können, z. B. die Kontrollliste oder separate Optionspunkte. Wenn die Bedingung auf mehreren Steuerelementen basiert und der Benutzer bei der Umstellung zwischen jedem Feld auf der Seite nicht möchten, dass der Benutzer die Bedingung bewertet, können Sie diese Methode verwenden.
Eine weitere Option in der Beta 1 oder höherer Version ist das Änderungsereignis mehrerer Steuerelemente. Die Methode besteht darin, einige eingebettete Skripte hinzuzufügen, die die oben beschriebene Clientfunktion ValidatorHookupControl aufrufen.
Welche Kontrollen können überprüft werden?
Um zu ermöglichen, dass die Steuerung durch die Kontrollreferenz überprüft werden kann, muss die Steuerung die Attribute verifiziert haben. Alle verifizierten Kontrollen haben ValidationPropertyAttribute -Eigenschaften, die das Attribut anzeigen, das während der Überprüfung gelesen werden sollte. Wenn Sie Ihre eigene Kontrolle schreiben, können Sie die Attribute angeben, die durch die Bereitstellung eines davon verwendet werden sollen, damit die Kontrolle an der Überprüfung beteiligt ist.
Damit die Überprüfung normal am Client durchgeführt werden kann, muss das Attribut den Werteigenschaften des vom Client angezeigten HTML -Elements entsprechen. Viele komplizierte Steuerelemente (z. B. DataGrid und Kalender) sind den Client nicht wert und können nur auf dem Server überprüft werden. Daher können nur Kontrollen, die HTML -Elementen am nächsten liegen, an der Überprüfung teilnehmen. Darüber hinaus muss die Steuerung einen einzelnen Logikwert für den Client haben. Daher kann RadiobuttonList überprüft werden, die Kontrollkästchen jedoch nicht.
Ende
Die oben genannte Erklärung der ASP+ -Verifizierung hat möglicherweise den Inhalt überschritten, den Sie verstehen möchten. Genießen Sie es!