2

关于最佳实践的快速问题。

我有一个项目 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; }

这是在我的模型上的,比如说,客户类。验证在 UI 上完美运行。

在第二个项目中,当首先使用 Entity Framework - 数据库时,我有我的 edmx 文件和我的实体,我使用 ObjectContext 查询数据库,这意味着 Customer 类是由 EF 构建的。

我现在应该在哪里添加这些验证?

4

1 回答 1

3

模型首先有这个问题 - 但它可以使用元数据来解决。假设您有一个名为的生成实体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));
于 2012-08-29T13:35:17.410 回答