【问题标题】:ASP.Net MVC3, DataAnnotations and Dynamic ValidationASP.Net MVC3、DataAnnotations 和动态验证
【发布时间】:2011-11-18 05:38:06
【问题描述】:

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

是否有一种模式可以将数据注释与运行时提供的元数据一起使用?

例子:

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,但没有看到修改实例属性属性的选项(仅实例上的类级别属性,或类型的属性级别属性)。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 有趣的选择。 FluentValidation.NET 是否适用于 Entity Framework Code First?
    • @EricJ.,是的,它适用于任何模型。只需安装FluentValidation.MVC3 NuGet,在您的 Application_Start:FluentValidationModelValidatorProvider.Configure(); 中注册流畅的验证模型验证器提供程序,然后您就可以为您的模型定义验证器。
    • 酷! FluentValidation.Net 是否生成属性以提供 DataAnnotations 提供的相同客户端验证?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2011-01-11
      • 1970-01-01
      • 2011-03-26
      • 2011-02-20
      • 1970-01-01
      相关资源
      最近更新 更多