0

MVC3プロジェクトの1つにカスタム正規表現バリデーターを実装する途中です。

カスタム属性を使用して、検証を正しく実行することができました。

以下のカスタム属性で装飾されたビューモデルプロパティ

[RegularExpressionIF( "DependantProperty"、 "TargetValue"、 "Pattern"、 "ErrorMessage")]

しかし、私の要件は、property1の値をProperty2の値に基づく特定の正規表現と一致させる必要があるということです。例:プロパティ2はドロップダウンであり、値は1、2、3です。ユーザーが1を選択すると、通常の表現パターンは{REGX1}になり、2{REGX2}はそのようになります。

これらの値を含む変数を渡して、属性を変更しようとしました。しかし、ビルドでは、.Netは、渡されるのは「一定」でなければならないと主張します。属性に値をハードコーディングすることはできますが、以下のようなパラメーターを渡すことはできません。

[RegularExpressionIF( "DependantProperty"、 "TargetValue"、patternDictionary、 "ErrorMessage")]

誰かがこれで私を助けることができればそれは素晴らしいでしょう..

4

1 に答える 1

0

実行時にプロパティの値を取得するには、リフレクションを使用する必要があります。

protected override ValidationResult IsValid(
    object value, 
    ValidationContext context)
{
    // DependantProperty is the string name of the dependant property
    PropertyInfo property = context.ObjectType.GetProperty(this.DependantProperty);
    object dependant = property.GetValue(context.ObjectInstance, null);

    // do something with dependant
}
于 2012-06-27T18:34:47.343 に答える