我有Customer
的元数据类,我验证了PurchaseDate
。
DataType
)用于格式化EditorFor
中的日期,以便仅显示日期部分。我的问题是第一个注释将取消第二个注释的错误消息。
是否可以仅使用数据注释将这两者结合起来?或者我必须在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);
}
}
}