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.3 Wie das Display-Attribut funktioniert  toptop

Solange Sie nur wenige Eingabefelder haben, die untereinander angeordnet sind, werden Ihnen die Fehlermeldungen neben den Eingabefeldern kein Problem bereiten. Anders sieht es aus, wenn Sie ein komplexes Formular mit vielen Eingabefeldern entwerfen, dessen Steuerelemente durch die Ausgabe der Fehlermeldungen nicht wild durcheinander geworfen werden sollen. In diesem Zusammenhang ist es wichtig, zu verstehen, wie das Display-Attribut die Darstellung beeinflusst.

Display01.aspx enthält ein Formular, das zwei Eingabefelder nebeneinander anordnet. Abbildung 7.5 zeigt die Darstellung im Browser.

<!-- Display01.aspx -->
<% @Page debug="true" %>
<html><head>
<title>Display-Attribut</title></head><body>
<form runat="server">
Bitte füllen Sie alle Felder aus:<br><br>
Vorname: 
<input type="text" runat="server" id="txtVorname">
Nachname: 
<input type="text" runat="server" id="txtNachname">
<input type="submit" runat="server" value="  OK  ">
</form></body></html>

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

Abbildung 7.5 Dieses Formular enthält noch keine Validierungssteuerelemente.

In der Seite Display02.aspx fügen Sie für jedes Eingabefeld ein RequiredFieldValidator-Steuerelement hinzu.

<!-- Display02.aspx -->
<% @Page debug="true" %>
<html><head>
<title>Display-Attribut</title></head><body>
<form runat="server">
Bitte füllen Sie alle Felder aus:<br><br>
Vorname: 
<input type="text" runat="server" id="txtVorname">
<asp:RequiredFieldValidator  
     ControlToValidate="txtVorname"  
     runat="server">
     Bitte geben Sie den Vornamen an.
</asp:RequiredFieldValidator> 
Nachname: 
<input type="text" runat="server" id="txtNachname">
<asp:RequiredFieldValidator  
     ControlToValidate="txtNachname"  
     runat="server">
     Bitte geben Sie den Nachnamen an.
</asp:RequiredFieldValidator> 
<input type="submit" runat="server" value="  OK  ">
</form></body></html>

Abbildung 7.6 zeigt die Darstellung im Browser, die aber etwas verrutscht wirkt.

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

Abbildung 7.6 Die Validierungssteuerelemente lassen das Layout verrutschen.

Wenn Sie einen Blick in den generierten HTML-Code werfen, wird klar, wie diese Verwerfungen zustande kommen:

[... ]
Vorname: 
<input name="txtVorname" id="txtVorname" type="text" />
<span id="_ctl1" controltovalidate="txtVorname" 
evaluationfunction="RequiredFieldValidatorEvaluateIsValid" 
initialvalue="" style="color:Red;visibility:hidden;">
     Bitte geben Sie den Vornamen an.
</span> 
Nachname:
[...]

Die Fehlermeldungen sind bereits im HTML-Code enthalten, werden aber durch die CSS-Anweisung visibility:hidden unsichtbar gemacht. Platz benötigen die Fehlermeldungen dabei aber immer noch. So entstehen die großen »Löcher« zwischen den Formularelementen.

Wenn Sie nicht möchten, dass der Fehlertext als unsichtbarer Platzhalter eingefügt wird, könnten Sie auf die Idee kommen, im Validierungssteuerelement das Attribut Display="dynamic" zu verwenden statt dem voreingestellten Wert Display="static". Anschließend sieht das Formular zunächst so aus wie der ursprüngliche HTML-Entwurf. Sobald aber ein Fehler auftritt, wird die Meldung hinter das entsprechende Feld geschrieben, womit der Formularentwurf erneut durcheinander gebracht wird.


Tipp   Langer Rede kurzer Sinn: Wenn Sie 1. hinter den Eingabefeldern Fehlermeldungen anbringen möchten, aber 2. nicht möchten, dass dadurch das Formularlayout durcheinander kommt, dann müssen Sie das Formular so entwerfen, dass Sie von Anfang an einen Platz für die Fehlermeldungen vorsehen. In diesem Fall ist auch die Standardeinstellung Display="static" die sinnvollere Option, weil dann garantiert nichts mehr durcheinander geworfen werden kann. Man muss ja nicht unbedingt hinter jede mangelhafte Eingabe gleich einen Roman schreiben. Eine kleine Markierung in Verbindung mit einem zentralen Hinweis wird oft ausreichen.

  

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