2017-01-27 5 views
0

私はコントロールの検証をチェックする基本クラスを持っています。DXErrorProviderは、異なるDataAnnotation/Validator属性に対して異なるエラータイプを設定できますか?

Validator.TryValidateObject(ds, new ValidationContext(ds), res, true); 

私のコントロールにバインドされた特定のデータソースが返されるというエラーが発生します。

これは問題ありませんが、DXErrorProviderでは「警告」などのエラーの種類も設定できます。

私のデータオブジェクトの検証属性に従って特定のエラータイプを設定できる方法はありますか?

今のところ、自分の属性の名前を確認して確認することで実現しましたが、このソリューションはもっと複雑で非効率的なようです。

答えて

0

これは自動化された方法では不可能です。 hereを読むことができるので、DXErrorProviderはインターフェイスIDXDataErrorInfoに基づいてtotalyです。 DXArrorProviderはエラーアイコンと共にDataAnnotationsを使用している場合、コントロール自体によって処理されるため、DXErrorProviderは必要ありません。したがって、カスタムアイコンを使用する場合は、これをエラー処理の方法に混在させることができます。たとえば、あなたはsthを行うことができます。このように:

public class MyClass : IDXDataErrorInfo 
{ 
    [Range(0,100)] 
    [//Further custom validation] 
    public int Id {get;set;} 

    //Implement the Interface for your DXErrorProvider 
    public void GetPropertyError(string propertyname, ErrorInfo info) 
    { 
     List<ValidationResult> errors = new List<ValidationResult>(); 

     if (propertyname.Equals(nameof(Id)) 
     { 
     if (!Validator.TryValidateProperty(Id, new ValidationContext(this,null,null), errors)) 
     { 
      string errorText = string.Empty; 
      errors.ForEach(e => errorText += e.ErrorMessage); 

      //This type set's the error-icon 
      info.ErrorType = //The Type you want ErrorType.Warning for example 
      info.ErrorText = errorText; 
     } 
     } 
    } 

     public void GetError(ErrorInfo info) {} 
} 

また、あなたのDataAnnotationsでcompletlyあなたの検証ロジックを処理するために、プロパティErrorTypeで構成されていValidationResultから子孫を書くことができます。私がかなりうまくいくと思うただ一つの可能​​な解決策。

関連する問題