我承認,我發現了很多類似的問題,但不完全是這樣:)
我與數據註解的實體屬性:MVC 4手動驗證用數據詮釋
public class BaseEntity
{
[Required, DataType(DataType.DateTime)]
public DateTime CreatedAt { get; set; }
public string CreatedBy { get; set; }
}
public class ExchangeRights : BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required, DataType(DataType.EmailAddress)]
public string Email { get; set; }
}
我嘗試驗證一個空對象:
ExchangeRights r = new ExchangeRights();
ValidationContext vCtx = new ValidationContext(r);
List<ValidationResult> res = new List<ValidationResult>();
Validator.TryValidateObject(r, vCtx, res, true);
這只是結果一錯誤。電子郵件字段是必需的。但沒有表明沒有電子郵件格式,並且沒有指出CreatedAt字段沒有設置(好吧,也許這是因爲不可爲空值類型)
但是,這是一個轉折點。
首先,我真的希望每個錯誤都應該顯示爲空,它不是電子郵件格式。
但更大的問題是,如果我將電子郵件設置爲「asd」該方法返回沒有錯誤。
但是,如果我在創建頁面上使用具有強類型視圖的實體(在MVC4中使用Razor),那麼它就更加奇怪了。
該表格表明電子郵件是需要的,或者如果我設置了比它說的無效的電子郵件地址格式。 此外還指出CreatedAt字段是必需的(有或沒有必需的屬性!!),如果我把它設置它說無效的日期時間格式。
任何幫助/想法/預感將不勝感激。
感謝,
彼得
因此詳細信息,如果我理解正確的DataTypeAttribute是關於如何像顯示例如編輯字段:@ Html.EditorFor(型號=> model.NTAccount) – 2013-04-05 13:50:18