これには簡単な解決策があるはずですが、見つけられないようです。
ChangePassword
ASP.NET 2.0 アプリケーションでコントロールを使用しており、 と の両方を使用してカスタムChangePasswordTemplate
スタイルSuccessTemplate
を定義しています。テキストボックスの ID は次のとおりです。
現在のパスワード テキストボックス ID = CurrentPassword
新しいパスワード テキストボックス ID = NewPassword
新しいパスワードの確認 テキストボックス ID = ConfirmPassword
理由DRY
により、カスタム メンバーシップ プロバイダーで定義されている正規表現を使用して、クライアント側の新しいパスワードを検証したいと考えています。残念ながら、ChangedPassword
コントロールのプロパティを次のように設定すると
ChangePassword.NewPasswordRegularExpression =
Membership.PasswordStrengthRegularExpression;
ChangePassword.NewPasswordRegularExpressionErrorMessage =
"Regex Error Message";
inPage_Init
は式を期待値に設定しますが、新しいパスワードでクライアント側の検証が行われることはありません (ページがポストバックされ、標準のメンバーシップChangePassword
失敗テキストが表示されます)。
で を使用しRegularExpressionValidator
てプロパティをChangePasswordTemplate
設定することもできますが、これを行うには、テンプレートのコントロールを再帰的に検索してプロパティを設定する必要があります。これにより、よりエレガントな方法が必要であると思います. これが検証プロパティの使用と競合する可能性がある場合に備えて、テンプレートに他のバリデータ コントロール (必須フィールドと比較バリデータ) があります。ValidationExpression
Membership.PasswordStrengthRegularExpression
RegularExpressionValidator
ChangePassword
私の質問は、テンプレートを使用するときにChangePassword
コントロールのプロパティが機能するか、それともコントロール ルートNewPasswordRegularExpression
をたどる必要があるかということです。RegularExpressionValidator
編集:
ChangePassword
コントロールのNewPasswordRegularExpression
プロパティがクライアント側を検証しない理由について決定的な答えが見つからないため、これについて報奨金を提供しました。