1

ValidationAttribute からクライアント検証ルールを取得しようとしています。問題のバリデーターには、DataAnnotationsModelValidatorProvider.RegisterAdapter を使用してアダプターとしてアタッチされた DataAnnotationsModelValidator を介してアタッチされたクライアント検証ルールがあります。

ただし、実行時にアダプターを元に戻す方法は一生わかりません。どんな助けでも大歓迎です。

ありがとう、アンドリュー

4

2 に答える 2

0

MemberInfo属性を持つプロパティのオブジェクトを取得するには、リフレクションを使用する必要があります。それで、

// given memberInfo, controllerContext, and modelMetadata 
// (see below on how to get metadata)
foreach (var attribute in memberInfo.GetCustomAttributes(typeof(ValidationAttribute), true)
{
    var clientValidationAttribute = attribute as IClientValidatable;
    if (clientValidationAttribute == null)
    {
        continue;
    }

    var clientValidationRules = clientValidationAttribute.GetClientValidationRules(modelMetadata, controllerContext);

    // do something with the rules
}

モデルのメタデータを取得するには、次を呼び出すことができます

ModelMetadata.FromLambdaExpression(expression, viewData)

ビューデータが手元にある場合。ModelMetadataProvider を明示的に呼び出して取得することもできます。詳細が必要な場合はお知らせください。

于 2012-09-14T18:44:47.290 に答える