Thomas Bandt

Über mich | Kontakt | Archiv

Validierung "mehrerer Formulare" auf einer Seite

Es kommt häufig vor, dass sich zwei oder mehr Formulare auf einer Seite befinden. Da bei ASP.NET jedoch nur noch ein (serverseitiges) Form vorkommt, werden folglich auch alle "einzelnen Formulare" in einen Topf geschmissen.

Beispiel: In einem UserControl definiert man ein kleines Login-Formular. Dieses UC bindet man wiederum auf einer Registrierungsseite ein.

Soweit alles in Ordnung. Will man nun aber die schönen vorgefertigten ValidationControls von ASP.NET einsetzen, die sonst so prima ihre Arbeit verrichten, so erlebt man nun schnell sein blaues Wunder.

Denn betätigt man den Button für den Login springen nun auch die ValidationControls für die Registrierung mit an - und umgedreht.

Den Grund habe ich eben schon genannt: für ASP.NET ist das alles ein und dasselbe Formular - es kann schlicht nicht zwischen Login und Registrierung unterscheiden und validiert so sämtliche Felder der Site.

Lösen kann man das Problem eigentlich nur, in dem man einzelne Elemente gruppiert - und so indirekt natürlich wieder bei mehreren Forms landet. Ich bin mal gespannt, was sich da in ASP.NET 2.0 tut...

Das hat mir aber natürlich nicht weitergeholfen. Was kann man also tun?

Ich habe mich für einen "halbautomatischen Weg" entschieden, der nicht mehr ganz so easy funktioniert, bei dem ich aber trotzdem nicht auf den Komfort der ValidationControls (VC's) verzichten muss.

Und zwar werden nun sämtliche VC's per default auf enabled=false gestellt. Das verhindet eine Validierung, der Rückgabewert ist immer true.

Beim Aufruf der jeweiligen Methoden Login bzw. Register setze ich nun alle VC's, die ich brauche wieder auf enabled, validiere (Page.Validate()) und fertig.

Einziger wirklicher Nachteil: die clientseitige Validierung haut nicht mehr hin, aber was soll's - die funzt sowieso nicht in allen Browsern richtig :)

Kommentare

  1. Alex schrieb am Montag, 26. Juli 2004 13:01:00 Uhr:

    So mache ich das auch immer.... ;-)
  2. Thomas schrieb am Montag, 26. Juli 2004 14:39:00 Uhr:

    :-P
  3. Chris schrieb am Montag, 26. Juli 2004 21:26:00 Uhr:

    Ich habe den Part nachgeliefert wie's in 2.0 funktioniert: http://chrison.net/PermaLink,guid,9e93cbdf-743d-48fe-9714-383952d04470.aspx


« Zurück  |  Weiter »