动态数据问题:
我的模型上有2个Nullable<DateTime>
类型的字段
当我使用插入表单并输入垃圾字符串时,例如“sdfsdfas”的日期,它给了我一个丑陋的错误信息
无法将输入字符串'rtgh'转换为'System.Nullable`1 [[System.DateTime,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]'。
因此,我创建了一个MetaData类,以尝试获得更友好的错误
[MetadataType(typeof(RuleMetadata))]
public partial class Rule
{
public class RuleMetadata
{
[ScaffoldColumn(false)]
public Guid RuleId;
// tried this overload
[DataType("Some error")]
public Nullable<DateTime> ValidFrom;
// tried this overload
[DataType(DataType.Date)]
public Nullable<DateTime> ValidTo;
}
}
但它完全被忽略了,我得到了以前的丑陋错误
我做错了什么?
答案 0 :(得分:1)
最终通过创建CustomAttribute
来完成此操作对于一个可以为你辩护的框架来说似乎有点过分
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
sealed class DateFormatAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime dt;
return DateTime.TryParse(value.ToString(), out dt);
}
}
然后将该属性应用于我的MetaData类
[DateFormat(ErrorMessage = "Valid From must be a valid date format")]
public DateTime? ValidFrom;