关于最佳做法的快速提问。
我有一个项目MVC3 + razor,在我的课上,在我的每个属性上,我都有一些这样的验证:
[StringLength(20)]
[RegularExpression(@"^[1-9][0-9]*$",ErrorMessage="Only Numbers Allowed") ]
[Required(AllowEmptyStrings = false, ErrorMessage = "Please Inform The Code")]
[Display(Name = "Code")]
public string gCode { get; set; }
这是我的,比如我的模型上的Customer类。验证在UI上完美运行。
在第二个项目中,当使用Entity Framework - 数据库时,我的edmx文件包含我的实体,我使用ObjectContext查询数据库,这意味着Customer类是由EF构建的。
我现在应该在哪里添加这些验证?
答案 0 :(得分:3)
模型首先有这个问题 - 但它可以使用MetaData解决。假设您有一个名为Field
的生成实体和要用[Required]
属性装饰的值字段,请执行以下操作:
namespace Model.Entities {
[MetadataType(typeof(FieldMetadata))]
public partial class Field : EntityBase {
}
class FieldMetadata {
[Required]
public object Value;
}
}
在这里,您要将元数据添加到您无法修改的现有类成员的Value成员中。
编辑:如果它不起作用,也可以调用TypeDescriptor。
TypeDescriptor.AddProvider(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Field), typeof(FieldMetadata)), typeof(Field));