Thomas Bandt

Über mich | Kontakt | Archiv

[ASP.NET 2.0] Validieren von Controls über mehrere Views in einem MultiView-Control

Es liegt nahe, ein Formular in mehrere Views aufzuteilen. Validiert man nun aber dieses Formular mit ValidationControls wird man nicht schlecht schauen - denn es wird immer nur der Teil validiert, der gerade angezeigt wird, sprich die aktive View.

Wie validiert man nun alle Controls in einer Multiview? Ich habe tatsächlich keine bessere Lösung gefunden als diese (die Fehlerausgabe ist natürlich nur zum Testen dagewesen):

private void PrintErrors(BaseValidator val)
{
   Response.Write(val.ControlToValidate + ": " + val.ErrorMessage + "
"
);
}

protected void Button1_Click1(object sender, EventArgs e)
{

   int activeIndex = MultiView1.ActiveViewIndex;

   for (int i = 0; i < MultiView1.Views.Count; i++)
   {
      MultiView1.ActiveViewIndex = i;
      foreach (BaseValidator val in MultiView1.Views[i].Page.Validators)
      {
         val.Validate();
         if (!val.IsValid)
         PrintErrors(val);
      }
   }

   MultiView1.ActiveViewIndex = activeIndex;

}

Zugegeben, etwas pervers ist es schon. Man läuft also in einer Schleife über alle Views des MultiView-Controls, setzt die jeweilige View auf aktiv und kann dann über deren Validation-Controls laufen und entsprechend validieren. Ohne das Setzen der ActiveIndexView-Property funktioniert es nicht ...

Passt irgendie zum Freitag.



« Zurück  |  Weiter »