代码之家  ›  专栏  ›  技术社区  ›  mohsinali1317

C允许值属性

c#
  •  -3
  • mohsinali1317  · 技术社区  · 6 年前

    我有一个变量,我只允许其中的某些值。

    [Required(ErrorMessage = "Category must be provided")]
    [Range(2, 4)]
    public int Category { get; set; }
    

    我想在这个变量中允许更多的值,比如6和10。我该怎么做?是否有可以指定允许的特定值的属性?

    2 回复  |  直到 6 年前
        1
  •  1
  •   irfandar    6 年前

    选项1

    在表单提交处理程序或上下键处理程序上使用javascript验证

    选项2

    使用正则化压缩数据注释

    [RegularExpression("[2|6]", ErrorMessage = "Enter 2 or 6 only")]

    选项3

    使用自定义验证器

        2
  •  1
  •   Antoine V    6 年前

    可以创建自定义验证属性。例如:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.ComponentModel.DataAnnotations;    
    
    namespace MyProject.Models.Validation
    {
    
        public class SpecialCategoryAttribute : ValidationAttribute
        {
            protected override ValidationResult IsValid(object value, ValidationContext validationContext)
            {
    
                if(value == 6 || value == 10)
                {
                    return ValidationResult.Success;
                }
    
    
                return new ValidationResult("Fail");
            }
        }
    }
    

    但似乎这两个属性之间存在冲突: Range 允许2->4和 SpecialCategory 只允许6和10。所以,你的模型并不总是有效的。

    我想你可以把你的 范围 只使用 特殊分类 值为2->4、6和10。