2 Stimmen

Validierungsanwendungsblock-Objektvalidator funktioniert nicht mit Regelsätzen

Ive kämpfte mit diesem Problem, das ich ursprünglich dachte, kann zu tun mit Polymorphismus/Vererbung, die meine Validierung aber ive verengt es auf diese...

Hier ist die Klassenstruktur

public class Employee {

    [ObjectValidator(Ruleset = "A")]
    public EmployeeName Name { get; set; }

    public Employee()
    {
        Name = new EmployeeName();
    }
}

public class EmployeeName
{
    [StringLengthValidator(1,20,Ruleset = "A")]
    public string First { get; set; }

    public string Last { get; set; }

    public EmployeeName()
    {
        First = string.Empty;
        Last = string.Empty;
    }
}

Der Test:

[TestFixture]
public class ObjectValidationWithRulesets
{
    [Test]
    public void wont_validate_with_a_ruleset()
    {
        var person = new Employee()
        {
            Name = new EmployeeName()
            {
                First = string.Empty, 
                Last = string.Empty
            }
        };

        var ruleSetValidator =
            ValidationFactory.CreateValidator<Employee>("A");

        var validationResults = ruleSetValidator.Validate(person);

        Assert.That(!validationResults.IsValid,
            "Validation with rulsets failed");
    }
}

Dieser Test ist erfolgreich, wenn ich das Regelsatzmaterial entferne. Aber sobald der Regelsatz angewendet wird, kann ich das Objekt nicht korrekt validieren.

Kann jemand etwas Licht in diese Angelegenheit bringen?

Zum Wohl,

2voto

pradeeptp Punkte 2041

Auch ich hatte dieses Problem, aber ich hatte targetRuleSet nicht in der Konfigurationsdatei definiert. Ich habe das Problem behoben, indem ich die Art und Weise der Deklaration des Attributs ObjectValidator korrigiert habe. Die korrekte Syntax, die bei mir funktionierte, lautet wie folgt

// Correct
[ObjectValidator("RuleSetA", Ruleset = "RuleSetA")]

In meinem Code hatte ich ihn fälschlicherweise wie folgt deklariert

// Wrong syntax
[ObjectValidator(Ruleset = "RuleSetA")]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X