有关最佳实践的快速问题。
我有一个项目 MVC3 + razor,在我的类(class)上,在我的每个属性上,我都有一些如下验证:
[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; }
这是我的模型上的客户类。验证在 UI 上完美运行。
在第二个项目中,首先使用实体框架 - 数据库时,我有包含实体的 edmx 文件,并使用 ObjectContext 查询数据库,这意味着 Customer 类是由 EF 构建的。
我现在应该在哪里添加这些验证?
最佳答案
模型首先存在这个问题 - 但可以使用元数据来解决。假设您有一个名为 Field
的生成实体,并且想要用 [Required]
属性装饰 Value 字段,只需执行以下操作:
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));
关于c# - Entity Framework 上的 Razor 类验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178982/