2011-02-11 63 views
3

我们将一个快速项目(CRUD表单)放在一起,并决定跳过视图模型并直接在控制器和视图中使用EF实体。由于我不习惯这种方法,所以我对处理验证感到困惑。将验证附加到MVC控制器/视图中使用的EF对象?

例如:一个数据库字段的长度为25.如何在我的视图中传递(如果可以)到验证约束?如果我使用的是中间模型,我会将属性附加到模型属性上,它会起作用。我如何直接使用EF对象来做到这一点?谢谢。

回答

7

这可以使用Ef生成的类上的MetadataType属性完成。 EF生成部分类。所以这些可以扩展并添加属性。然后可以编写另一个可以进行会员装饰的“哥们班”。例如

[MetadataType(typeof(EFGeneratedClass_MetaData))] 
public partial class EFGeneratedClass 
{ 
} 

public partial class EFGeneratedClass_MetaData 
{ 
    [Required] 
    [Display(Name="Member1 Display")] 
    public string Member1 {get; set;} 
} 
+0

谢谢。你有链接到这方面的更多信息?谢谢! – 2011-02-11 21:31:14

0

最简单的做法是使用System.ComponentModel.DataAnnotations anmespace中的DataAnnotations属性。

MVC尊重这些内容,并在任何失败时填充您的ModelError集合。在你的例子中,你可以为该命名空间添加使用语句,然后仅标记一个属性,然后将其称为一天。

0

您需要使用部分'伙伴'元类并使用验证属性对其进行修饰。

例如,说你的实体是 '富':

[MetadataType(typeof(FooMetadata))] 
public partial class Foo {} 

public class FooMetadata 
{ 
    //apply validation attributes to properties 
    [Required] 
    [Range(0, 25)] 
    [DisplayName("Some Neato Property")] 
    public int SomeProperty { get; set; } 
} 

欲了解更多信息,请参阅MSDN上的这个链接:

Customize Data Field Validation in the Model

干杯。

相关问题