我面临验证属性的问题,该属性的验证属性与相应的字段名称相关联。
int _myIntField;
public int MyIntField {
get { return _myIntField; }
set { _myIntField = value; }
}
现在,在验证Binding
对象时,我可以访问BindingField
,它返回属性名称MyIntField
,而不是字段名称_myIntField
。
是否有可能以某种方式检索属性的_myIntField
?如果是这样,怎么样?
答案 0 :(得分:0)
实际上,对于我的情况,我有一个解决办法:我创建了一个自定义属性,将相关的字段名称作为参数...
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;
}
}