MVC3客户端验证与DB生成的实体框架

时间:2012-02-08 09:50:49

标签: asp.net-mvc asp.net-mvc-3 entity-framework client-side

在我的应用程序中,我使用了从db生成的Entity Framework和ado.net dbcontext生成。

当有not null fk时,客户端效果很好但是对于字段行varchar/nvarchar not null mvcvalidator 似乎无法识别该字段应该< EM> “需要”

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:4)

没有Mvc Validator不会读取您的数据库元数据并执行客户端验证。

通常,您会创建一个ViewModel / DTO并在那里放置验证。例如,像产品一样,查看字段如何具有属性,这些属性来自System.ComponentModel.DataAnnotations命名空间,用于使用验证约束来装饰模型。

 public class Product
 {
        public int Id { get; set; }

        [Required]
        [StringLength(10)]
        public string Name { get; set; }

        [Required]
        public string Description { get; set; }

        [DisplayName("Price")]
        [Required]
        [RegularExpression(@"^\$?\d+(\.(\d{2}))?$")]
        public decimal UnitPrice { get; set; }
    }

请参阅此处的完整示例: http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validation-with-the-data-annotation-validators-cs

您在视图中使用模型(如上所述),mvc将执行验证,甚至是客户端,然后使用返回的对象实例来填充您的实体模型。

如果您不想创建单独的类并坚持使用EntityFramework中的实体,则可以创建一个伙伴类。

看到这篇文章: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

向下滚动到=&gt; 但是如果我们使用图形工具进行ORM映射呢?

有一个Person,它通过tge MetadataTypeAttribute

与Validator类相关联

类似的东西:

[MetadataType(typeof(PersonMetaData))]
public partial class Person
{
}
public class PersonMetaData
{
    [Required(ErrorMessage = "Name is required.")]
    public object Name;
}