在我的应用程序中,我使用的是使用ado.net dbcontext生成的数据库生成的实体框架。MVC3客户端使用数据库生成的实体框架进行验证
客户端效果很好,当有一个not null fk
但对于场A线varchar/nvarchar not null
只是似乎该mvcvalidator不承认该字段是应该“必需的”。
任何想法为什么发生这种情况?
在我的应用程序中,我使用的是使用ado.net dbcontext生成的数据库生成的实体框架。MVC3客户端使用数据库生成的实体框架进行验证
客户端效果很好,当有一个not null fk
但对于场A线varchar/nvarchar not null
只是似乎该mvcvalidator不承认该字段是应该“必需的”。
任何想法为什么发生这种情况?
否Mvc验证器不会读取您的数据库元数据并执行客户端验证。
通常你会创建一个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
向下滚动到=>但是,如果我们使用我们的ORM映射的图形工具?
有一个Person
,它是由猪传染性胃肠炎MetadataTypeAttribute
喜欢的东西连起来Validator类:
[MetadataType(typeof(PersonMetaData))]
public partial class Person
{
}
public class PersonMetaData
{
[Required(ErrorMessage = "Name is required.")]
public object Name;
}
是,我找到了相同的解决方案。 我认为微软创建了一个缺乏某些功能的“半佳”对象;我不明白为什么实体框架不能像为主键和外键一样完成所有的工作。 无论如何谢谢 – antogg2004 2012-02-08 14:00:30
:)视图模型的方法是相当不错的,有点你从实体框架中分离出来。如果您发现它有帮助,请考虑[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 – gideon 2012-02-08 14:06:53
**和代码是... ** – gdoron 2012-02-08 10:00:27