我有一個具有PhoneNumber和Email屬性的客戶類。使用DataAnnotations我可以使用DataType驗證屬性修飾屬性,但我看不到讓我感覺到的是什麼。關於DataType的工作方式,有沒有關於數據註釋的很好的參考?
例如:
[DataType(DataType.PhoneNumber)]
public string PhoneNumber {get; set;}
我有分配 「1515999A」 這個屬性一個單元測試。當我逐步驗證跑步者時,該值被認爲對電話號碼有效。我原以爲這應該是無效的。
我google'd圍繞一些,但無法找到各種枚舉DataTypes實際上捕獲什麼樣的解釋。有什麼值得參考的地方?
編輯:
下面是我用什麼驗證亞軍的膽量......
public virtual XLValidationIssues ValidateAttributes<TEntity>(TEntity entity)
{
var validationIssues = new XLValidationIssues();
// Get list of properties from validationModel
var props = entity.GetType().GetProperties();
// Perform validation on each property
foreach (var prop in props)
ValidateProperty(validationIssues, entity, prop);
// Return the list
return validationIssues;
}
protected virtual void ValidateProperty<TEntity>(XLValidationIssues validationIssues, TEntity entity, PropertyInfo property)
{
// Get list of validator attributes
var validators = property.GetCustomAttributes(typeof(ValidationAttribute), true);
foreach (ValidationAttribute validator in validators)
ValidateValidator(validationIssues, entity, property, validator);
}
protected virtual void ValidateValidator<TEntity>(XLValidationIssues validationIssues, TEntity entity, PropertyInfo property, ValidationAttribute validator)
{
var value = property.GetValue(entity, null);
if (!validator.IsValid(value))
validationIssues.Add(new XLValidationIssue(property.Name, value, validator.FormatErrorMessage(property.Name, value)));
}
驗證這是在框架3.5或4.0?你使用哪個驗證跑步者? – 2009-08-31 14:31:47
好評。我使用3.5,我使用了一個相當簡單的自定義驗證運行器(發佈上面的代碼)。 – 2009-09-01 14:24:49