我有一个元数据类用于我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);
}
}
}