2008-12-11 8 views
11

Ich habe ein ASP.Net-Webbenutzer-Steuerelement, das eine TextBox und einen Kalender aus dem Ajax Control Toolkit enthält.Web-Benutzersteuerelemente und Validierung

Wenn ich dieses Benutzersteuerelement auf meiner Seite einfüge, möchte ich, dass es an der Eingabevalidierung teilnimmt (es gibt einen erforderlichen Validierer für die TextBox innerhalb des UC), d. Wenn die Seite validiert ist, sollte der Inhalt des UC ebenfalls validiert werden. Also musste ich mit meiner UC die IValidator-Schnittstelle implementieren, was gut funktionierte, außer dass ich die Validierungsgruppe nicht auf der Benutzersteuerung setzen konnte. Offenbar sollte ich von BaseValidator übernehmen, um das zu tun, aber ich kann nicht, da ich UserControl bereits vererbe.

Es muss einen Weg geben, mit diesem häufigen Szenario umzugehen.

+0

Kasse: [? Wie Usercontrol validieren] (http://izlooite.blogspot.com/2010/ 07/how-to-validieren-user-control.html) –

Antwort

10

Erstellen Sie eine Eigenschaft für das neue Benutzersteuerelement, mit der die Validierungsgruppe für den enthaltenen Validator festgelegt wird. Anschließend müssen Sie lediglich die ValidationGroup-Eigenschaft für das Steuerelement festlegen und diese wird zu den im Benutzersteuerelement enthaltenen Validatoren rollen. Sie benötigen wahrscheinlich nicht die Schnittstelle oder erben von BaseValidator, es sei denn, Sie erstellen gerade ein Validierungsbenutzer-Steuerelement.

public string ValidationGroup 
{ 
    get 
    { 
     return MyRequiredFieldValidator.ValidationGroup; 
    } 
    set 
    { 
     MyRequiredFieldValidator.ValidationGroup = value; 
    } 
} 
3

Versuchen Sie, [ValidationProperty("NameOfPropertyToBeValidated") zu Ihrer Benutzersteuerungsklasse hinzuzufügen.

0

Wenn Sie planen, in Zukunft viele Validierungen hinzuzufügen, kann es sich auszahlen, Peter Blum's DES (Data Entry Suite) zu überprüfen - es verfügt über zahlreiche erweiterte Steuerelemente für die Dateneingabe und -validierung einschließlich bedingter Validierungsszenarios beschreiben. Lizenzierung ist sehr sinnvoll im Vergleich zu der Zeit, die Sie für die Entwicklung benötigen.

13

Sie ein Steuerelement in einem Benutzersteuer durch seperating die beiden mit einem Dollarzeichen verweisen können:

<asp:RequiredFieldValidator ControlToValidate="MyUserControl$ControlId" runat="server" />