7.5 RangeValidator
 
Mit dem RangeValidator können Sie sicherstellen, dass
|
eine Eingabe zu einem bestimmten Datentyp gehört und |
|
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>
 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#
|