0

我的 mvc3 应用程序有问题,我需要创建一些验证内容。但我没有普通的模型类,因为我已经将 EF 与数据库优先方法一起使用。

我不能只是打开课程并写下类似的东西:

[Required]
[StringLength(10)]

如何解决这个问题呢?

4

1 回答 1

2

您可以使用MetadataType 属性。因此,让我们假设 EF 向您吐出以下您无法修改的类:

public partial class Foo
{
    public string Bar { get; set; }
}

现在你可以扩展它,因为它是一个部分类

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

然后定义元数据:

public class FooMetadata
{
    [Required]
    [StringLength(10)]
    public string Foo { get; set; }
}

或者,简单地丢弃数据注释并使用真正的验证框架,例如FluentValidation.NET(我使用并强烈推荐),允许您以流畅的方式在模型上表达复杂的验证规则,与 ASP.NET MVC 具有出色的集成并且还允许您优雅地对您的验证逻辑进行单独的单元测试。

于 2012-07-05T10:06:47.480 回答