我们将一个快速项目(CRUD表单)放在一起,并决定跳过视图模型并直接在控制器和视图中使用EF实体。由于我不习惯这种方法,所以我对处理验证感到困惑。将验证附加到MVC控制器/视图中使用的EF对象?
例如:一个数据库字段的长度为25.如何在我的视图中传递(如果可以)到验证约束?如果我使用的是中间模型,我会将属性附加到模型属性上,它会起作用。我如何直接使用EF对象来做到这一点?谢谢。
我们将一个快速项目(CRUD表单)放在一起,并决定跳过视图模型并直接在控制器和视图中使用EF实体。由于我不习惯这种方法,所以我对处理验证感到困惑。将验证附加到MVC控制器/视图中使用的EF对象?
例如:一个数据库字段的长度为25.如何在我的视图中传递(如果可以)到验证约束?如果我使用的是中间模型,我会将属性附加到模型属性上,它会起作用。我如何直接使用EF对象来做到这一点?谢谢。
这可以使用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;}
}
最简单的做法是使用System.ComponentModel.DataAnnotations anmespace中的DataAnnotations属性。
MVC尊重这些内容,并在任何失败时填充您的ModelError集合。在你的例子中,你可以为该命名空间添加使用语句,然后仅标记一个属性,然后将其称为一天。
您需要使用部分'伙伴'元类并使用验证属性对其进行修饰。
例如,说你的实体是 '富':
[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
干杯。
谢谢。你有链接到这方面的更多信息?谢谢! – 2011-02-11 21:31:14