.comment-link {margin-left:.6em;}
CustomValidation AJAX Control SampleDie ASP.NET Web Forms bieten im Standard Lieferumfang bereits eine Sammlung von Validierungs-Controls zur Überprüfung der Werte in den Feldern eines Formulars. Dabei werden 2 Vorgehensweisen unterstützt:
Mit der Hilfe von AJAX und der Möglichkeit von asynchronen Aufrufen auf den Server im Hintergrund kann ohne große Anstrengung eine dritte Art der Validierung implementiert werden bei der die großen Möglichkeiten einer serverseitigen Überprüfung mit den Vorteilen einer guten Anwendererfahrung durch die schnelle und unmittelbare Überprüfung auf dem Client kombiniert werden. Wenn der Benutzer den Wert eines Feldes ändert und das Feld verlässt wird ein bestimmter WebService aufgerufen, der den Wert überprüft. Die Implementierung ist offensichtlich. 1. Man benutzt den vorhandenen CustomValidator um eine clientseitige Funktion anzubinden: <input autocomplete="off" id="EMAIL_IN" runat="server" name="EMAIL" /> <asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="EMAIL_IN" ErrorMessage="Please enter a valid e-mail address." ClientValidationFunction="validateEMail">*</asp:CustomValidator> 2. Die im Attribut ClientValidationFunction spezifizierte clientseitige Überprüfung die von dem Control verwendet wird lässt das arguments.isvalid Flag auf true gesetzt (default) um alle aktuell angezeigten Fehler zu löschen und startet dasnn eine AJAX Action mit dem source Object als Parameter. function validateEMail(source, arguments) {
ajax.Start(validateAction, source);
} // validateEMail
3. Die AJAX Action wird deklariert. Sie basiert auf einigen Implementierungsdetails der clientseitigen Fehleranzeige: var validateAction = {
delay: 0,
prepare: function (source) {
// from the Validator Common JavaScript
return(ValidatorGetValue(source.controltovalidate));
},
call: proxies.ValidatorDemo.ValidateEMail,
finish: function (val, source) {
// from the Validator Common JavaScript
source.isvalid = val;
if (! val)
Page_IsValid = false;
ValidatorUpdateDisplay(source);
ValidationSummaryOnSubmit(null);
},
onException: proxies.alertException
} // validateAction
Diese Deklaration beinhaltet keine für die Überprüfung spezifischen Code bis auf den Verweis auf den WebService um eine E-Mail Adresse zu verifizieren so dass diese Deklaration auch für andere Zwecke wieder verwendet werden kann. Die Integration der AJAX Action ist ein wenig trickreich, denn die eingebaute Validierung in den ASP.NET Validierungen erwarten keine asynchrone Bearbeitungen sondern wollen eine unmittelbare Entscheidung und die Validierungs-Übersicht aktualisiert sich leider nicht immer korrekt. Der WebService selbst kann nun tun, was immer auch zu tun ist. In meinem Beispiel benutze ich die Dns Klasse um den Domänennamen aufzufinden und um damit zu prüfen ob sie überhaupt deklariert ist. Das kann nicht auf dem Client gemacht werden und ist ein Beispiel für die starken Möglichkeiten, die man auf dem Server aber nicht auf dem Client zur Verfügung hat. Das Beispiel findet man in: http://www.mathertel.de/AjaxEngine/S03_AJAXControls/ValidatorDemo.aspx Verwendung von AJAX fähigen Controls in ASP.NET FormsDie Verwendung von Formularen ist für viele Web Applikationen die wichtigste Funktionalität. Sie verlassen sich sehr darauf denn diese Funktionalität war bereits in den alten Browsern implementiert und auch die modernen unterstützen diese Funktionalität immer noch. AJAX Funktionalitäten in Web Applikationen zu verwenden bedeutet nicht dass alles re-implementiert werden muss. Mit AJAX Funktionalitäten können diese Applikationen leicht um Controls mit asynchronen Hintergrundsfunktionalitäten erweitert werden ohne die aktuelle Applikationsstruktur aufzubrechen:
Gemeinsam für diese Szenarien ist, dass eine reine clientseitige Implementierung oft schwer zu realisieren oder gar unmöglich ist, da die benötigten Daten oder Funktionalitäten auf dem Client nicht direkt zur Verfügung stehen. Auf dem Server ist im Gegensatz dazu die Information verfügbar und wird in den herkömmlichen normalen Web Forms verwendet um die Eingaben des Anwenders zu prüfen bevor die weitere Funktionalität ausgeführt wird. Wenn man AJAX fähige Controls in eine existierenden Web Applikation integriert ist es möglich die Formulare entgegenkommender zu gestalten und durch eine schnellere Rückkopplung dem Benutzer zu helfen. Die Ausführung der Web Form kann so bleiben sie sie ist indem die Daten des Formulars an den Server übermittelt und dort verarbeitet wird. Auf der Beispiel Website zu diesem Blog, siehe http://www.mathertel.de/AJAXEngine/Default.aspx, sind einige Beispiele enthalten die die Verwendung von AJAX in normalen Web Formularen veranschaulichen: Validator Demohttp://http://www.mathertel.de/AJAXEngine/S03_AJAXControls/ValidatorDemo.aspx zeigt, wie man eine serverseitige DNS Überprüfung verwendet um zu prüfen ob der Servername einer to E-Mail Adresse auf dem Web bekannt ist ohne das Formular neu zu laden. Bible Readerhttp://www.mathertel.de/AJAXEngine/S03_AJAXControls/BiblePage.aspx hier wird u.a. gezeigt, wie man Optionen von HTML SELECT Elementen in Abhängigkeit von anderen Werten setzen kann ohne das Formular neu zu laden. |
AJAX = Asynchronous JavaScript And XML (+ DHTML) Ãber dieses BlogDie Programmierung im Ajax Stil ist eine interessante Art der Programmierung von Web Applikationen unter Verwendung der stabilen Internet Technologien wie HTML und Javascript. In diesem BLOG will ich meine Erfahrungen auf diesem Gebiet und einige interessante Aspekte mit einfachen wie auch fortgeschrittenen Themen beleuchten. Downloads:AjaxEngine.zip (39 kByte) This Zip-File contains the core files of the AJAX engine and the AJAX controls. Ajax.zip (164 kByte) This Zip-File contains the ASP.NET 2.0 web project that builds this side. All samples are included. Sample WebSite:Die Beispiele sowie den ausführlichen Sourcecode findet man auf der Beispiel Website: Documentation:See http://www.mathertel.de/AJAX License
Letzte Posts
Archiv |