Validierung eines ASP.NET Benutzer-Steuerung von übergeordneten Seite
Habe ich eine asp.net Seite mit einer Schaltfläche. Diese Schaltfläche generiert und fügt ein Benutzer-Steuerelement in die Seite, so viele Kontrollen existieren könnte, auf der einen Seite. Ich brauche, um zu überprüfen, ob eine bestimmte dynamisch generierte Steuerelement in das generierte Steuerelement vorhanden ist.
Also..die Seite hat 0 bis N Control1 ist. Jedes Control 1 kann 0 bis N Inhalt2 ist. Bei SaveButton geklickt wird auf der Seite, die ich brauche zu machen sicher es gibt mindestens 1 Inhalt2 ' s in jedem Control1.
Ich bin derzeit zwischen zwei Optionen:
• Dynamisch einfügen CustomValidators für jedes Steuerelement generiert wird, von denen jeder würde bestätigen Control1.
• Führen die Validierung manuell (mit jQuery), ruft eine Validierungs-Funktion von SaveButton.OnClientClick.
Beide sind schlampig in Ihren eigenen Weg – und das ist, warum ich mich auf den Austausch mit Euch allen. Übersehe ich die einfache Lösung?
Vielen Dank im Voraus.. (btw – alles bis zu und einschließlich .NET 3.5 SP1 ist fair game)
- Checkout: Wie überprüft UserControl?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hmm ich mag die Schnittstelle Anregung von digiguru aber ich würde die Schnittstelle auf den container Control1 anstelle der sub-regler wie es scheint, wie die mehr der logische Platz für den code, um zu Leben. Hier ist mein nehmen auf Sie:
dann implementieren Sie diese auf Ihrem Control1
Wahrscheinlich gibt es bessere Wege, dies zu schreiben, aber es sollte Ihnen genug von einer Idee, um loszulegen.
Wenn Sie das hinzufügen von Benutzer-Steuerelementen, die auf die Fliegen, könnte man jedes Steuerelement implementieren die gleiche Schnittstelle mit einer Funktion Validiert. So laden Sie die Steuerelemente in einen Platzhalter in jede übergeordnete Steuerelement auf die Seite. Wenn die Seite abgeschickt wird, einfach eine Schleife durch die controls in die Platzhalter, warf Sie auf die interface-Klasse, und rufen Sie dann die Funktion überprüfen. Ich nicht verwenden Sie benutzerdefinierte Validatoren, aber Sie können die Liste der Validierungs-Fehler-Objekt zurückgegeben, die von der überprüfen-Funktion können Sie machen diese Sammlung der Validierung Fehler welcher Art und Weise, die Sie mögen.
Ich denke Sie könnten es tun, indem eine öffentliche Eigenschaft in Control1, die auf die Existenz von Inhalt2, die ID, und dann schmücken Control1 s-Klasse mit ValidationProperty. Ich bin am überlegen etwas in diese Richtung:
Dann sollten Sie in der Lage sein zu zeigen Sie ein RequiredFieldValidator auf eine Instanz von Control1.
Eine Methode, die Sie könnten versuchen, ist die Schaffung und Aufrechterhaltung einer einfachen xml-Struktur, die für Ihren benutzerdefinierten Steuerelement-Hierarchie. Einfügen oder löschen aus dieser Struktur jedes mal, wenn Sie erstellen oder löschen einer benutzerdefinierten Steuerung. Nach dem speichern, überprüfen Sie, dass der control-Hierarchie dargestellt, in der xml-Struktur korrekt ist. Speichern Sie die xml-Daten in das Session-Objekt zu persistieren über postbacks.