Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

CustomValidator - Weshalb bei leeren Werten nicht validiert wird

Die Validator Controls wurden so konzipiert, das sie kombiniert werden können.
Das heisst dann aber auch, das bei der Überprüfung auf einen leeren Wert oder falls ein Wert gegeben ist, dieser passen muss, jeweils ein RequiredFieldValidator und ein zusätzlicher Validator auf ein Control angesetzt werden müssten.

Natürlich kann ein solcher Fall auch mithilfe von einem CustomValidator gelöst werden, jedoch gibt es da eine Stolperfalle.
Kommt ein leerer Wert beim CustomValidator an, gibt er per Default die Prüfung als Erfolg an.
Mit den folgenden Codeausschnitten die aus den Original Validator Controls entnommen sind (Reflector) sollte klar werden, weshalb dann keine weitere Prüfung anspringt:

RequiredFieldValidator:

protected override bool EvaluateIsValid()
{
    string controlValidationValue = base.GetControlValidationValue(base.ControlToValidate);
    return ((controlValidationValue == null) || !controlValidationValue.Trim().Equals(this.InitialValue.Trim()));
}

 

CustomValidator:

protected override bool EvaluateIsValid()
{
    string controlValidationValue = string.Empty;
    string name = base.ControlToValidate;
    if (name.Length > 0)
    {
        controlValidationValue = base.GetControlValidationValue(name);
        if (((controlValidationValue == null) || (controlValidationValue.Trim().Length == 0)) && !this.ValidateEmptyText)
        {
            return true;
        }
    }
    return this.OnServerValidate(controlValidationValue);
}

 

Der CustomValidator stosst nur eine Prüfung an, falls ValidateEmptyText auf false steht.
Die Lösung ist in dem Falle völlig simpel, einfach die Eigenschaft ValidateEmptyText auf true setzen.

Veröffentlicht Dienstag, 7. August 2007 22:49 von Peter Bucher

Kommentare

# CustomValidator - Ein Anwendungsbeispiel

Keine Frage, mit den Validator Controls von ASP.NET wird uns das Leben etwas leichter gemacht. Jedoch

Montag, 11. Februar 2008 23:18 by Peter Bucher
Anonyme Kommentare sind nicht zugelassen