c# - Entity Framework 上的 Razor 类验证

标签 c# asp.net-mvc entity-framework razor

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

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

相关文章:

C# Skipwhile 到 VB skipWhile

c# - 使用 IDistributedCache 列出和删除给定组中的所有缓存条目

c# - 创建一个返回数组的方法

asp.net-mvc - 如何从 ASP.NET MVC Controller 操作流式传输 MP3

c# - EF6如何映射这种零或一对一关系

c# - 使用泛型乘以整数

javascript - 服务器上的 AJAX 成功功能

c# - 将 Razor 选择绑定(bind)到来自 VewData 的字典

c# - Entity Framework 为映射到 View 的实体生成的 SQL

entity-framework - EF : Is it OK to use DbSet<T>. AddOrUpdate() 在迁移之外?