我面临验证一个属性的问题,该属性的验证属性与相应的字段名相关联。
int _myIntField;
public int MyIntField {
get { return _myIntField; }
set { _myIntField = value; }
}
现在,在验证Binding
对象时,我可以访问BindingField
,它返回属性名MyIntField
,而不是字段名_myIntField
。
是否可以以某种方式检索该属性的_myIntField
?如果是,如何?
实际上,对于我的情况,我有一个解决方案:我创建了一个以相关字段名为参数的自定义属性。。。
int _myIntField;
[MyAttribue("_myIntField")]
public int MyIntField {
get { return _myIntField; }
set { _myIntField = value; }
}
为了完整起见,这里是属性的声明:
public class MyAttribue : ValidationAttribute {
protected readonly string _fieldName;
public MyAttribue(string fldName) {
_fieldName = fldName;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
if (validationContext == null) {
return ValidationResult.Success;
}
ErrorMessage = string.Empty;
if (validationContext.ObjectInstance != null) {
// do whathever validation is required using _fieldName...
}
//
if (!string.IsNullOrWhiteSpace(ErrorMessage)) {
return new ValidationResult(ErrorMessage);
}
return ValidationResult.Success;
}
}