Почему NotNullValidator не работает? - PullRequest
0 голосов
/ 15 февраля 2010

Я использую Microsoft Enterprise Validation. Но в этом случае тест проходит успешно, даже если я присвоил этому атрибуту нулевое значение. Почему?

[NotNullValidator(MessageTemplate = "Cannot be null!", Ruleset="validate_x")]
[StringLengthValidator(10, RangeBoundaryType.Inclusive, 40, RangeBoundaryType.Inclusive, Ruleset="validate_x")]
[RegexValidator(@"^[A-Z][a-z]*\s[A-Z][a-z]*$", MessageTemplate = "Not valid!", Ruleset="validate_x")]
public string x
{
    get;
    set;
}

А в тестовом классе:

[TestMethod()]
public void xTest()
{
    MyBO target = new MyBO() { x = null };
    ValidationResults vr = Validation.Validate<MyBO>(target, "validate_x");
    Assert.IsTrue(vr.IsValid);
}

Итак, я понял, что это действительно, но так не должно быть. (х ноль!) Есть идеи?

Спасибо

1 Ответ

1 голос
/ 15 февраля 2010

При копировании кода, предоставленного вами в простое консольное приложение, я вижу, что свойство IsValid объекта ValidationResults становится False. Я думаю, что вы где-то делаете что-то не так, но это невозможно, просто посмотрите на этот код. Вот код, который я использовал:

public class MyBO
{
    [NotNullValidator(MessageTemplate = "Cannot be null!",
        Ruleset = "validate_x")]
    [StringLengthValidator(10, RangeBoundaryType.Inclusive, 40, 
        RangeBoundaryType.Inclusive, Ruleset = "validate_x")]
    [RegexValidator(@"^[A-Z][a-z]*\s[A-Z][a-z]*$",
        MessageTemplate = "Not valid!", Ruleset = "validate_x")]
    public string x { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        MyBO target = new MyBO() { x = null };
        ValidationResults vr = Validation.Validate<MyBO>(target, "validate_x");
        Console.WriteLine(vr.IsValid);
    }
}
...