ValidationAttribute からクライアント検証ルールを取得しようとしています。問題のバリデーターには、DataAnnotationsModelValidatorProvider.RegisterAdapter を使用してアダプターとしてアタッチされた DataAnnotationsModelValidator を介してアタッチされたクライアント検証ルールがあります。
ただし、実行時にアダプターを元に戻す方法は一生わかりません。どんな助けでも大歓迎です。
ありがとう、アンドリュー
ValidationAttribute からクライアント検証ルールを取得しようとしています。問題のバリデーターには、DataAnnotationsModelValidatorProvider.RegisterAdapter を使用してアダプターとしてアタッチされた DataAnnotationsModelValidator を介してアタッチされたクライアント検証ルールがあります。
ただし、実行時にアダプターを元に戻す方法は一生わかりません。どんな助けでも大歓迎です。
ありがとう、アンドリュー
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 を明示的に呼び出して取得することもできます。詳細が必要な場合はお知らせください。