2009-06-22 14 views
1

Ich habe meine eigenen Validator geschrieben und obwohl der Prüfer scheint zu funktionieren (wie es funktioniert die Eigenschaft Text angezeigt wird, wenn ungültig) die Validation nicht die Errormessage-Eigenschaft nicht angezeigt, oder irgendetwas, wenn die Validierung fehlschlägt. Interessanterweise scheint es, dass die Eigenschaft Text nicht angezeigt wird, wenn ich der Seite ein weiteres Steuerelement mit einem Validator hinzufüge. Was mache ich falsch?Validator nicht Errormessage zu Validation vorbei

public class RequiredCheckBoxListValidator : BaseValidator 
{ 
private CheckBoxList _list; 
private int _requiredCount = 1; 

public int RequiredCount 
{ 
    get { return _requiredCount; } 
    set { _requiredCount = value; } 
} 

public RequiredCheckBoxListValidator() 
{ 
    EnableClientScript = false; 
} 

protected override bool ControlPropertiesValid() 
{ 
    Control control = FindControl(ControlToValidate); 

    if (control != null) 
    { 
    _list = (CheckBoxList)control; 
    return (_list != null); 
    } 
    else 
    { 
    return false; 
    } 
} 

protected override bool EvaluateIsValid() 
{ 
    return (_list.Items.Cast<ListItem>().Where(li => li.Selected).Count() == _requiredCount); 
} 
} 

Antwort

0

Es würde helfen, Ihre clientside Informationen zu sehen.

Ohne dies, meine Vermutungen sind ShowSummary in der validtorsummary überprüfen, um sicherzustellen, dass es die Zusammenfassung nicht versteckt, und um zu sehen, ob die Validatoren und Zusammenfassung in separaten UpdatePanels sind.

+0

Keine clientside Informationen zu sprechen; Ich bin nur an der serverseitigen Validierung interessiert. ShowSummary ist korrekt eingestellt ... die ValidatorSummary wird andere Validatoren auf der Seite auswählen (wenn ich sie zu Testzwecken dort ablege). Keine UpdatePanels, aber das Steuerelement befindet sich im Content-Tag eines "Slave" auf einer Masterseite. – FloatingPoint

+1

Ah, nach Peter Blum ist es egal, was Ihre serverseitige Validierung tut, wenn Sie keine clientseitige Validierung haben, wird die Nachricht nicht angezeigt. Ist es nur ich, oder sind .NET-Validierer wirklich noch eher enttäuschend? – FloatingPoint

+0

Ich verwende sehr selten die eingebauten .NET-Validatoren, weil sie so schäbig sind. Und ja, wahrscheinlich benötigen Sie eine clientseitige Validierung. Es zählt wahrscheinlich, wenn Sie einen AJAX-Aufruf von Ihrer Seite ausführen, um eine validationtation -Methode in Ihrem CodeBehind aufzurufen, wenn Sie die JavaScript-Route vermeiden möchten. – Drithyin