C#允许值属性

时间:2018-08-08 08:09:46

标签: c#

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

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

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

4 个答案:

答案 0 :(得分:1)

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

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。因此,您的模型并不总是有效的。

我认为您可以删除Range并仅使用SpecialCategory,并将其值设置为2-> 4以及6和10。

答案 1 :(得分:1)

选项1

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

选项2

像这样使用RegularExpression数据注释

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

选项3

使用自定义验证器

答案 2 :(得分:0)

q1 = Queue(maxsize = 0)
q2 = Queue(maxsize = 0)
.
.

qn = Queue(maxsize = 0)

答案 3 :(得分:0)

[RegularExpression("^(2|4|6|10)$")]

public int 类别 { get;放; }