我正在使用Microsoft企业验证。但在这种情况下,即使我为该属性赋值null值,测试也会通过。为什么呢?
[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);
}
所以我知道这是有效的,但不应该。 (x为空!) 有什么想法吗?
由于
答案 0 :(得分:1)
将您提供的代码复制到简单的控制台应用程序时,我看到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);
}
}