ASP.Net MVC3,DataAnnotations和动态验证

时间:2011-11-18 05:38:06

标签: asp.net-mvc-3 data-annotations

我正在创建一个MVC 3应用程序,它需要在运行时根据外部数据建立数据验证规则(例如Required,MinimumLength,MaximumLength)。在MVC 3中使用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 个答案:

答案 0 :(得分:4)

  

在MVC 3中使用Data Annotations似乎很自然

不适合我。由于它们的声明性质,我从未真正喜欢数据注释。以声明方式进行验证会限制功能。我一直很喜欢并使用FluentValidation.NET

答案 1 :(得分:1)

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