1
我有這樣的代碼在我的課:多DataAnnotation不起作用
[Required(
ErrorMessageResourceType = typeof (Resources),
ErrorMessageResourceName = "VALIDATION_ERROR_ISO"
)]
[StringLength(3,
ErrorMessageResourceType = typeof (Resources),
ErrorMessageResourceName = "VALIDATION_ERROR_STRING_LENGTH_3"
)]
public virtual string ISO
{
get { return iso; }
set
{
iso = value;
OnPropertyChanged("ISO");
}
}
這種方法來驗證:
public bool IsValid
{
get
{
var validationContext = new ValidationContext(this, null, null);
return Validator.TryValidateObject(this, validationContext, validationResults);
}
}
在我的單元測試:
var testLanguage = new Language(){ISO = "More than 3 characters"};
Assert.IsTrue(!testLanguage.IsValid);
這是有效的。如果ISO屬性爲空,則由於必需的屬性而無效。看來我的IsValid沒有檢查Stringlength(3)屬性?
我使用Visual Studio 2010
預先感謝您
編輯:
我發現我的錯誤:
return Validator.TryValidateObject(this, validationContext, validationResults);
需要真正的標誌來檢查所有屬性。現在它適用於:
return Validator.TryValidateObject(this, validationContext, validationResults, true);
這並沒有爲我工作... – GrayFox
創建一個樣本MVC應用程序和一個文本框結合ISO和我的代碼將工作。我已經測試了我的環境。如果在StringLength之前放置Required,則StringLength驗證不會觸發,但反之亦然。 –