1

我有一个元数据类用于我Customer验证PurchaseDate.

  • 第一个注释 ( DataType) 用于格式化 an 中的日期EditorFor,以仅显示日期部分。
  • 第二个注释是一个自定义验证,用于验证该值是否为 DateTime,包括自定义错误消息。

我的问题是第一个注释将取消第二个注释的错误消息。

是否可以仅使用数据注释将这两者结合起来?还是我必须格式化日期EditorFor

[MetadataType(typeof(Customer_Metadata))]
public partial class Customer { }

public class Customer_Metadata
{
    [DataType(DataType.Date)]
    [MyDate(ErrorMessage = "Invalid purchase date")]
    public DateTime? PurchaseDate { get; set; }
}

如果我尝试[DataType(DataType.Date)]

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

我不会收到我的自定义错误消息。

编辑
我的主要目标是有一个自定义错误消息,同时也只在呈现的输入字段中显示日期部分。是否可以仅使用数据注释?

这是MyDate属性:

public class MyDate : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        DateTime dt;
        var test = DateTime.TryParse((value ?? string.Empty).ToString(), out dt);
        if (test)
        {
            return ValidationResult.Success;
        }
        else
        {
            return new ValidationResult(ErrorMessage);
        }
    }
}
4

0 回答 0