我正在尝试重写子类中的DataAnnotation。
我尝试过类似问题的解决方法,但收效有限。
例如,我有一个使用RangeAttribute的类
public class BaseViewModel
{
[Range(1, 99999999, ErrorMessageResourceName = "NotInRange9M", ErrorMessageResourceType = typeof(Resources.Account))]
public virtual decimal? Amount { get; set; }
}
以及子类:
public class ExtendedViewModel : BaseViewModel
{
internal decimal? _amount;
[Range(1, 2000, ErrorMessageResourceName = "NotInRange2K", ErrorMessageResourceType = typeof(Resources.Account))]
public override decimal? Amount {
get { return _amount; }
set { _amount = value; }
}
}
此示例有效,因此使用第一个对象的表单将给出客户端验证错误
"The amount must be between 1 and 999,999,999"
第二个会说
"The amount must be between 1 and 2,000"
.
但是,如果我想让子类不经过任何验证:
public class ExtendedViewModel : BaseViewModel
{
internal decimal? _amount;
public override decimal? Amount {
get { return _amount; }
set { _amount = value; }
}
}
使用此选项的表单仍然会显示客户端验证错误
“金额必须介于1和999999999之间”
,它以某种方式从父级继承。
因此,我们可以覆盖属性,但无法消除它们?
还有别的办法吗?
我也尝试过:
new public decimal? Amount {
get { return _amount; }
set { _amount = value; }
}
没有成功。
我必须克服这个限制,但我想了解数据注释的这种机制,以便更好地使用它们。