如何在DevExpress中为属性定义自定义验证?

时间:2016-02-24 13:47:29

标签: c# validation devexpress xpo

请考虑我在实体中有财产

        public double RealVolume
        {
            get
            {
                return _RealVolume;
            }
            set
            {
                SetPropertyValue("RealVolume", ref _RealVolume, value);
            }
        }   

然后我也有

        [Browsable(false)]
        public VolumeType VolumeOrVolumePoints
        {
            get
            {
                return WMSSystemSetting.Get_VolumeOrVolumePoints(Session);
            }
        }

我希望在VolumeOrVolumePoints == VolumeType.Volume然后RealVolume验证为整数,否则验证为双号。

我怎么能实现这个目标?谢谢!

1 个答案:

答案 0 :(得分:0)

有关如何使用XPO验证对象的信息,请参阅here。如果您正好使用DevExpress XAF,请使用 ValidationModule中的ValidationRule

所以你需要这样的东西:

protected override void OnSaving() 
{
    if (VolumeOrVolumePoints == VolumeType.Volume)
    {
        if (RealVolume % 1 != 0) // see http://stackoverflow.com/a/2751597/1077279
             throw new Exception("The RealVolume value must be an integer when using Volume units.");
    }
}