我正在编码实体框架模型,我想根据预定义的允许值列表验证给定属性的传入数据。根据之前的研究,我决定通过自定义数据注释属性来确保最好的方法是确保每个需要此验证的属性都有一个传递给此属性的值的伴随数组,名为“[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'提供了必要条件。
我的定义要求有一个数组,我传递一个数组。为什么要求一个对象引用?
这比第一个答案有点多。你能否把这个评论下移到答案部分,以便我能接受它? –
移动它,但很抱歉,它不能真正解决您的问题。 –