none
DataAnnotationsによる他フィールドの入力検証 RRS feed

  • 質問

  • 現在VS2013 C# でWPFアプリケーションを作成しています。

    入力検証でDataAnnotationsを利用しようと思うのですが、同一クラス内の違うフィールドの値によって

    入力検証を有効・無効化したいのですが可能でしょうか。

    例えば下記のクラスの場合、Idが0の場合は入力検証は必要なく、それ以外の場合は

    Nameが必須入力になるような検証は可能かどうかご教示いただけますでしょうか。

    宜しくお願いいたします。

    public class TestClass
    {
        int Id { get; set; }
    
        // このフィールドの入力検証を行いたい
        string Name { get; set; }
    }
    

    2015年10月19日 5:29

回答

  • こんにちは。

    調べてみましたが、プロパティの検証属性のみではおそらく出来ないと思います。
    複数のフィールドを参照する関連チェックの場合は、単一プロパティではなくクラスインスタンスの検証になると思うので、
    IValidatableObject を使ってはどうでしょうか。

    IValidatableObject インターフェイス

    ネットではASP.NET MVCの例が多いような印象を受けましたが、
    多分WPFでも問題ないはずです。

    • 回答としてマーク れいじ 2015年10月20日 5:05
    2015年10月20日 3:58
    モデレータ

すべての返信

  • こんにちは。

    調べてみましたが、プロパティの検証属性のみではおそらく出来ないと思います。
    複数のフィールドを参照する関連チェックの場合は、単一プロパティではなくクラスインスタンスの検証になると思うので、
    IValidatableObject を使ってはどうでしょうか。

    IValidatableObject インターフェイス

    ネットではASP.NET MVCの例が多いような印象を受けましたが、
    多分WPFでも問題ないはずです。

    • 回答としてマーク れいじ 2015年10月20日 5:05
    2015年10月20日 3:58
    モデレータ
  • >Tak1waさん

    回答ありがとうございます。

    やはり無理そうなのですね。

    Tak1waさんに教えていただいたIValidatableObject を試してみたいと思います。

    2015年10月20日 5:05