c# - 带枚举的 RangeAttribute

标签 c# validation data-annotations

我有以下枚举:

public enum ApplicationLogTypes
    {
        Undefined = 0,
        Information = 100,
        Statistic = 200,
        Debug = 300,
        Security = 400,
        Error = 500
    }

我有一个带有 RangeAttribute Validation 的属性来强制用户没有选择默认选项“未定义”:

[Range(1, int.MaxValue, ErrorMessage = "Cannot select default option.")]
public ApplicationLogTypes ApplicationLogType { get; set; }

但是当我使用验证器时,它通过了:

public bool IsValid(ICollection<ValidationResult> results)
{
  bool isValid;
  ValidationContext validationContext = new ValidationContext(this);

  isValid = Validator.TryValidateObject(this, validationContext, results);

  return isValid;
}

使用此方法的其他验证正确地无法使用其他属性(例如 Required)进行验证。

有什么建议吗?

最佳答案

试试这个:

 isValid = Validator.TryValidateObject(this, validationContext, results, true);

枚举没有问题,你只是错过了最后一个参数 - validateAllProperties 类型:System.Boolean true 验证所有属性;如果为 false,则仅验证必需的属性。

关于c# - 带枚举的 RangeAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881069/

相关文章:

c# - 将 Unity 中的 XAML (WPF) 应用与 MixedRealityToolkit 相结合

c# - WinSCP SFTP 连接错误

validation - Rails 3 中的日期验证

validation - 训练准确性提高但验证准确性保持不变

asp.net-mvc - Asp.Net MVC : Some un-localized default error message?

c# - 如何使用 C# 将 Sorted DataView 分配给 DataTable 并保持排序状态?

c# - 通过 ListView 进行 foreach 并访问子项?

JavaScript表单验证问题

c# - EF CodeFirst 设置默认字符串长度并使用 DataAnnotations 覆盖?

c# - 替换属性值的数据注释?