小编Sil*_*van的帖子

Fluent Validation - 必须设置 n 项之一

我有一个名为“CustomerDataContract”的类,它具有三个属性:MobilePhone、OfficePhone 和 PrivatePhone。为了与客户取得联系,至少必须设置其中一项属性。

我创建了一个验证器类,并添加了一个名为“CheckForAnyPhoneNumber”的自定义规则,以检查是否至少提供了一个电话号码。这几乎解决了我的问题。我遇到的唯一问题是,如果我清除手机属性,它就会被评估并处于错误状态。如果我现在输入 OfficePhone 号码,则 MobilePhone 属性不会重新计算并保持错误模式。

知道如何正确解决这个问题吗?我也尝试创建规则集但没有成功。

这是(部分)CustomerDataContract:

public partial class CustomerDataContract
{

    public CustomerDataContract Clone()
    {
        return (CustomerDataContract) MemberwiseClone();
    }

    public override ValidationResult SelfValidate()
    {
        return ValidationHelper.Validate<CustomerDataContractValidator, CustomerDataContract>(this);
    }

}
Run Code Online (Sandbox Code Playgroud)

所有 DataContract 的基类:

[Serializable]
public abstract class BDataModel : IDataErrorInfo, INotifyPropertyChanged
{

    [field: NonSerialized]
    private ValidationResult _currentState = new ValidationResult();

    public ValidationResult CurrentValidationState
    {
        get { return _currentState; }
        set 
        { 
            _currentState = value;
            OnPropertyChanged("CurrentValidationState");
            OnPropertyChanged("IsValid");
            OnPropertyChanged("Error");
        }
    }

    #region INotifyPropertyChanged

    [field: NonSerialized]
    public event PropertyChangedEventHandler PropertyChanged; …
Run Code Online (Sandbox Code Playgroud)

c# validation fluentvalidation

5
推荐指数
1
解决办法
4306
查看次数

标签 统计

c# ×1

fluentvalidation ×1

validation ×1