ASP.Net MVC3,DataAnnotations和动态验证

4

我正在创建一个MVC 3应用程序,需要根据外部数据(例如:Required、MinimumLength、MaximumLength等)在运行时建立数据验证规则。在MVC 3中使用Data Annotations似乎很自然,但是提供验证元数据的属性特性是在编译时设置的。

是否有一种模式可以在运行时使用提供的元数据来使用Data Annotations?

示例:

public string Text { get; set; }

public void SetIsRequired(string propertyName, bool required)
{
    // Somehow find the property 'propertyName' and create/remove a RequiredAttribute
    // on that property
}

...
SetIsRequired("Text", true);

我知道TypeDescriptor,但是没有找到可以修改实例属性的属性选项(只有类级别的实例属性或类型属性级别的属性)。

2个回答

4

在MVC 3中使用数据注释似乎很自然

但对我而言并非如此。我从未真正喜欢过数据注释,因为它们的声明性质限制了其能力。我一直喜欢并使用FluentValidation.NET


有趣的替代方案。FluentValidation.NET是否与Entity Framework Code First兼容? - Eric J.
@EricJ.,是的,它可以与任何模型一起使用。只需安装FluentValidation.MVC3 NuGet,注册流畅验证模型验证器提供程序在您的Application_Start中:FluentValidationModelValidatorProvider.Configure();然后您就可以为您的模型定义验证器了。 - Darin Dimitrov
酷!FluentValidation.Net是否会生成属性来提供DataAnnotations提供的相同客户端验证? - dalcantara

1

你可以使用 IDataErrorInfo 接口(MVC 可以使用)编写自定义的动态验证规则。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接