【发布时间】:2017-02-04 00:26:10
【问题描述】:
我正在编写实体框架模型,我想根据预定义的允许值列表验证给定属性的传入数据。根据先前的研究,我决定最好的方法是通过自定义数据注释属性,确保需要此验证的每个属性都有一个随附的值数组传递给该属性,称为“[AllowableValue]”
所以我有以下课程:
public class className
{
public int Id { get; set; }
[Required]
[AllowableValues(ListOfAllowableValues)]
[MaxLength(2), MinLength(2)]
public string propertyName { get; set; }
[NotMapped]
public string[] ListOfAllowableValues = new string[]
{
"00",
"77",
"ZZ"
};
}
还有以下自定义属性:
public class AllowableValues : ValidationAttribute
{
string[] _list;
public AllowableValues(string[] list)
{
_list = list;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (_list.Contains((string)value))
return ValidationResult.Success;
return new ValidationResult("Invalid value.");
}
}
但是,在 Visual Studio 中,当我应用 [AllowableValues] 属性时,它给了我错误:“非静态字段、方法或属性 'className.ListOfAllowableValues' 需要对象引用。”
我的定义需要一个数组,我将它传递给一个数组。为什么它要求对象引用?
【问题讨论】:
-
这比第一个答案提供的信息多一点。您能否将此评论移至答案部分,以便我接受?
-
移动了它,但很抱歉它并没有真正解决您的问题。
标签: c# arrays data-annotations