私は多くの同様の質問を見つけたことを認めますが、正確にはこれではありません:)
データ注釈属性を持つエンティティがあります:
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);
結果は1つのエラーのみです。電子メール フィールドが必須であること。ただし、電子メール形式がないことを示したり、CreatedAt フィールドが設定されていないことを示したりしないでください (null を許容しない値の型が原因である可能性があります)
。
まず、すべてのエラーが空であり、電子メール形式ではないことを示す必要があります。
しかし、より大きな問題は、メールを「asd」に設定すると、メソッドがエラーを返さないことです。
ただし、作成ページでこのエンティティを強く型付けされたビュー (Razor で MVC4 を使用) で使用すると、すべて正常に動作します。
フォームは、電子メールが必須であることを示しているか、有効な電子メール アドレス形式ではないことを示しています。また、CreatedAt フィールドが必須であることも示します ( Required 属性の有無にかかわらず!!) を設定すると、有効な日時形式ではないと表示されます。
ヘルプ/アイデア/直感をいただければ幸いです。
ありがとう、
ピーター