【发布时间】:2010-10-30 17:27:39
【问题描述】:
与此question相关
我创建了自己的 DateValidationAttibute 以确保字符串采用有效的日期格式(例如,MM/DD/YYYY)
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class DateValidationAttribute : DataTypeAttribute
{
public DateValidationAttribute() : base(DataType.Date){}
//MM/DD/YYYY, MM-DD-YYYY
public override bool IsValid(object value)
{
//validation logic
}
}
我正在尝试使用此代码测试此属性
[Test]
public void Test()
{
var invalidObject = new TestValidation {DateField = "bah"};
var validationContext = new ValidationContext(invalidObject, null, null);
var validationResults = new System.Collections.Generic.List<ValidationResult>();
bool result = Validator.TryValidateObject(invalidObject, validationContext, validationResults);
Assert.IsFalse(result);
Assert.AreEqual(1, validationResults.Count);
}
private class TestValidation
{
[DateValidation(ErrorMessage = "Invalid Date!")]
public string DateField { get; set; }
}
很遗憾,这不起作用。我在 DateValidationAttribute 构造函数和 IsValid 方法处放置了一个断点。它肯定会命中构造函数,但永远不会命中 IsValid 方法。有什么想法吗?
【问题讨论】:
标签: c# .net asp.net-mvc validation data-annotations