Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Einstieg in ASP.NET von Matthias Lohrer
Einstieg in ASP.NET
gp Kapitel Validierung von Anwendereingaben
  gp 7.1 RequiredFieldValidator
    gp 7.1.1 Display-Attribut
    gp 7.1.2 InitialValue-Attribut
    gp 7.1.3 Die Fehlermeldung definieren
  gp 7.2 Das ValidationSummary-Steuerelement
  gp 7.3 Wie das Display-Attribut funktioniert
  gp 7.4 CompareValidator
    gp 7.4.1 Die Eingabe mit einem fixen Wert vergleichen
    gp 7.4.2 Zwei Eingabefelder miteinander vergleichen
    gp 7.4.3 Eine Typüberprüfung vornehmen
  gp 7.5 RangeValidator
  gp 7.6 RegularExpressionValidator
    gp 7.6.1 Reguläre Ausdrücke erstellen
    gp 7.6.2 Eingaben mit regulären Ausdrücken überprüfen
    gp 7.6.3 Konventionen für gültige Passwörter überprüfen
  gp 7.7 CustomValidator
    gp 7.7.1 Serverseitige Überprüfung
    gp 7.7.2 Eine clientseitige Überprüfung ergänzen


Galileo Computing

7.5 RangeValidator  toptop

Mit dem RangeValidator können Sie sicherstellen, dass

gp  eine Eingabe zu einem bestimmten Datentyp gehört und
gp  der eingegebene Wert sich in einem vorher festgelegten Bereich bewegt.

Mit den Attributen MinimumValue und MaximumValue legen Sie den gültigen Bereich fest. Mit dem Attribut Type definieren Sie den Datentyp. In range01.aspx werden Schüler danach gefragt, welche Schulklasse sie besuchen. Für deutsche Verhältnisse sind ganze Zahlen von 1 bis 13 gültig.

<!-- range01.aspx -->
<% @Page debug="true" %>
<html><head><title>Range-Validator</title></head><body>
<h3>Range-Validator</h3>
Hallo, Schüler,<br>
in welche Klasse gehst Du?<br>
<form runat="server">
<input type="text" runat="server" id="eingabe">
<input type="submit" value=" OK ">
<asp:RangeValidator runat="server"
     id="myRangeCheck"
     ControlToValidate="eingabe"
     MinimumValue="1"
     MaximumValue="13"
     Type="Integer">
     <p>Bitte eine ganze Zahl zwischen 1 und 13 
        eingeben.</p>  
</asp:RangeValidator>
</form></body></html>

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 7.7 Mit dem RangeValidator legen Sie einen gültigen Bereich fest.


Attribut Wert
id Eindeutiger Bezeichner
ControlToValidate id des zu überprüfenden Steuerelements
MinimumValue Kleinster Wert
MaximumValue Größter Wert
Type Datentyp, auf den die Eingabe überprüft wird. Möglich sind String, Integer, Double, Date, Currency.
ErrorMessage Fehlermeldung für ein ValidationSummary-Element
Text Text der Fehlermeldung
Display None | Static (Default) | Dynamic
EnableClientScript true|false
ForeColor Farbangabe
BackColor Farbangabe
runat server

Tabelle 7.4 Attribute des RangeValidator-Steuerelements

Auf diese Weise können Sie beispielsweise auch nach Datumseingaben fragen und diese überprüfen. Datumskonstanten weisen Sie den Attributen MaximumValue und MinimumValue in der deutschen Schreibweise »TT.MM.JJJJ« zu:

<asp:RangeValidator runat="server"
     id="myRangeCheck"
     ControlToValidate="eingabe"
     MinimumValue="1.1.1999"
     MaximumValue="31.12.2001"
     Type="Date">
<p>Falsches Datum</p>
</asp:RangeValidator>

Eine interessante Aufgabe ist es, den gültigen Bereich nicht in Form von fixen Werten, sondern variabel anzugeben. Wenn man beispielsweise nach dem Geburtsdatum einer lebenden Person fragt, dann ist als spätester Termin stets der heutige Tag und als frühester Termin ein Tag möglich, der maximal circa 120 Jahre in der Vergangenheit liegt. Dieser gültige Bereich verschiebt sich also täglich um einen Tag nach vorn. Offenkundig müssen Sie die begrenzenden Werte bei jedem Laden des Skripts neu berechnen, womit auch der Weg zur Realisierung vorgezeichnet ist: Sie weisen die aktuell gültigen Werte in der Ereignisprozedur Page_Load zu.

<!-- range02.aspx -->
<% @Page debug="true" %>
<script runat="server">
dim maxAlter as Integer
Dim minDate as New DateTime
dim maxDate as New DateTime


Sub Page_Load()
    maxAlter = 120
    maxDate = DateTime.Today
    minDate = maxDate.addYears (-maxAlter)
    myRangeCheck.MinimumValue = minDate
    myRangeCheck.MaximumValue = maxDate
End Sub
</script>

<html><head><title>Range-Validator</title></head><body>
<h3>Range-Validator mit variabler Datumsangabe</h3>
<form runat="server">
Bitte geben Sie Ihr <b>Geburtsdatum</b> ein. <br><br>
Sie können spätestens heute geboren worden sein.<br>
Sie dürfen maximal <% = maxAlter %> Jahre alt sein.
<br><br>
Weil heute der <% = maxDate.ToShortDateString %> ist, 
muss Ihr Geburtsdatum zwischen dem <br>
<% = minDate.ToShortDateString %> und dem 
<% = maxDate.ToShortDateString %> liegen.<br>
<br>
<input type="text" runat="server" id="eingabe">
<input type="submit" value=" OK ">

<asp:RangeValidator runat="server"
     id="myRangeCheck"
     ControlToValidate="eingabe"
     Type="Date">
<p>Nein, das kann nicht Ihr Geburtsdatum sein. </p> <$tab> 
</asp:RangeValidator>
</form></body></html>

Das Skript deklariert die Variablen minDate, maxDate und maxAlter außerhalb der Prozedur Page_Load, damit wir auch auf der übrigen Seite auf diese Variablen zugreifen können. Innerhalb von Page_Load erfolgt die Initialisierung dieser Variablen. Zunächst legen Sie das maximal erlaubte Alter fest. Die statische Methode Today liefert das aktuelle Datum. Mit minDate = maxDate.addYears (-maxAlter) können wir das Datum in der Vergangenheit berechnen. Dabei machen Sie sich das mathematische Prinzip zunutze, dass aus der Addition einer negativen Zahl eine Subtraktion resultiert. Anschließend weisen Sie die ermittelten Grenzwerte den Attributen des RangeValidator-Steuerelements zu. Falls Sie übrigens im Rahmen des Codes eine Datumskonstante zuweisen wollen, müssen Sie die Form

myDate = #MM/TT/JJJJ#

verwenden. Wenn Sie das frühestmögliche Geburtsdatum konstant auf den 31.12.1850 setzen wollten, würde die VB.NET- Zeile also lauten:

minDate = #12/31/1850#
  

Einstieg in VB.NET

VB.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML




Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de