"IsValid" bleibt immer auf "false"

Saber

Erfahrenes Mitglied
Hallo zusammen!

Ich hab mich ein bisschen mit den Validation-Klassen in ASP.NET rumgespielt. Ich verwende unter anderem folgenden Code:
Code:
			if (this.IsPostBack)
			{
				foreach (System.Web.UI.IValidator aValidator in this.Page.Validators)
				{
					aValidator.Validate();
					TblFreeSpace.Visible = !aValidator.IsValid;
				}
			}
			else
			{
				TblFreeSpace.Visible = false;
			}

Wenn ich nun in das verknüpfte Textfeld des RequiredFieldValidators keinen Wert eintrage, dann wird eine Meldung ausgegeben, weil "IsValid = false" ist. Wenn ich anschließend einen Wert eintrage und somit das Feld befülle, dass bleibt "IsValid" immer noch "false".

Zur Erklärung:
TblFreeSpace ist eine ASP-Tabelle, die nur angezeigt werden soll, wenn auf der Seite ein Eingabefehler entstanden ist. Der oben genannte Code läuft in einem Benutzersteuerelement ab, welche ValidationSummary ersetzen soll.

Irgendwas check ich bei der ganzen Sache nicht und ich wäre für jede Hilfe dankbar. :)
 
Zuletzt bearbeitet:
Hallo,

Du musst natürlich dem Programm auch sagen das er jetzt validieren soll. Wenn es ein Button nicht auslöst das musst du im Code manuell die Validate() Methode anschucken.

Wenn du einen Button hast, dann kannst du dem die Eigenschaft CausesValidation auf true setzten und somit löst dieser automatisch eine Validierung aus!
 
Mach ich doch:
Code:
aValidator.Validate();

Aber ich habs auch schon mit Page.Validate() versucht. Das bewirkt auch nix. Es bleibt immer false. Habs schon mit Work-Arounds versucht, funktioniert aber eher schmächtig als mächtig.
 
Danke @ René
Hat alles bestens geklappt so wie Du es in Deiner E-Mail beschrieben hattest.
Daumen hoch! :)
 
Wäre nett wenn du das Problem beschreiben könntest beziehungsweise die Lösung davon. (bzw. beides).

Würde mich nämlich selbst interessieren, und sollte ein anderer ein solches Problem haben wird er auch dankbar sein.
 
Ich muss meine Antwort leider zurückziehen, das Problem stellte sich leider nur anfangs als überwältigt dar. Sobald ich eine endgültige Lösung habe werde ich hier eine detailierte Schilderung abliefern (ich hoffe ich vergess es nicht!). ;)

Im kurzen ist folgendes zu sagen. Ich möchte mir ein eigenes "schöneres" ValidationSummary bauen. Das klappte anfangs auch recht gut. Aber diese Validation-Zeugs spinnt irgendwie voll rum mit den PostBack-Ereignissen, dann funktionierte die Page.Validate()-Methode nicht bzw. die Page.IsValid-Eigenschaft lieferte immer false zurück.
Die Mühe von René war leider auch umsonst, hat nun doch nix gebracht. *sorry* Aber trotzdem danke!
Aber ich hab schon einen Ansatz für ein Work-Around mit dem ViewState, muss mir wohl mein eigenes "PostBack" bauen.
Das selbstgebaute Steuerelement liegt nämlich auf einer Seite, die mit einem if-else-Block zweigeteilt ist. Und genau da haben die Microsoft-Validation-Controls versagt, und meines mag auch noch nicht so ganz ... Betonung auf "noch". :)

Wie gesagt, sobald ich es schaffe poste ich es hier nochmals genauestens ... nur die nächsten Tage habe vermutlich keine Zeit dazu. :(
 
Also irgendwie wills immer noch nicht, aber zumindest glaub ich zu wissen wo der Haken ist.

Vorweg:

1.) Ich habe eine Hauptseite: default.aspx. Darin befindet sich hauptsächlich das HTML Layout. Zusätzlich ist ein Placeholder-Control darauf. Es wird später durch die einzelnen User-Controls mit dem Inhalt gefüllt.

2.) Der Inhalt der Seiten ist in User-Controls abgelegt. Wenn ich also im Menü auf "Home" klicke, dann lädt er das User-Control mit dem Home-Inhalt etc.

3.) Ich habe mir ein weiteres User-Control gebaut. Es soll mir lediglich das originale ValidationSummary-Control ersetzen, weiter nichts (dachte ich zumindest ^^)

4.) Wenn ich die Seite nun aufrufe, dann gibt er mit in meinem selbstgebautem ValidationSummary IMMER Fehlermeldungen aus. Er soll überprüfen, ob ein Textfeld gefüllt ist. Page.IsValid bleibt immer "false". Ich rufe auch die Page.Validate() vorher auf!


Meine Vermutung:

Mein Aufbau sieht also folgendermaßen aus:
Hauptseite <-- UserControl (Inhalt) <-- UserControl (Eigene ValidationSummary) <--- Code Behind (Fehlerbehandlung)
Ich vermute nun mal ganz einfach, dass ich in meinem eigenen ValidationSummary-Control keine Validierung der Steuerelemente (z.B. Textboxes) auf dem anderen User-Control (Inhalt) anstoßen kann. Puh, ziemlich kompliziert ... hmm?

Liege ich mit meiner Vermutung richtig und wenn ja/nein, wie könnte ich weiter vorgehen! DANKE im Vorraus! :)
 

Neue Beiträge

Zurück