3

テキストボックスに2つCustom Validators添付しています。テキストボックスは、電子メールのコンマ区切りリストを入力するためのものです。最初のバリデーターは、重複する電子メールアドレスがないことを確認します。2番目のカスタムバリデーターは、すべての電子メールアドレスが有効な形式であることを確認します。私は次のコードを持っています、そしてそれはうまくいきます。

ただし、両方の失敗基準が満たされると、両方が*起動し、テキストボックスの右側に2つ表示されます。一度に1つだけ表示するための最良のアプローチは何*ですか?

ここに画像の説明を入力してください

コード

<asp:CustomValidator ID="valEmailRecipients" runat="server" ControlToValidate="txtEmailRecipients"
ClientValidationFunction="isUniqueElements" OnServerValidate="IsUniqueEmail_Validate"
Text="*" ErrorMessage="There should be no duplicate email address for a report"
ValidationGroup="Save">
</asp:CustomValidator>

<asp:CustomValidator ID="valEmailFormat" runat="server" ControlToValidate="txtEmailRecipients"
ClientValidationFunction="checkEmailFormat" OnServerValidate="IsValidEmailFormat_Validate"
Text="*" ErrorMessage="Entries should be valid email addresses separated by comma"
ValidationGroup="Save">
</asp:CustomValidator>

参考文献

  1. ASP.NETサーバーコントロールのカスタム関数を使用した検証
  2. javascriptでasp検証コントロールを有効/無効にします
  3. バリデーターのValidatorEnable()javascript属性を設定するにはどうすればよいですか?
  4. バリデーターはJavascriptを使用して有効にします
4

2 に答える 2

2

true最も簡単な方法:-電子メールが正しい形式でない場合、valEmailRecipientsが返されるようにします。つまり、他の検証が成功した場合にのみ機能します。

他の方法:- DisablingそしてEnablingバリデーター、これは苦痛かもしれません。

好奇心から、なぜ2つのアスタリスクで問題が発生するのでしょうか。

于 2012-12-19T17:02:08.520 に答える
1

単一のカスタムバリデーターを作成し、その上ですべての検証ロジックを実行します。

1つの検証に合格しなかった場合は、それに応じたエラーメッセージを設定し、args.IsValidをfalseに設定して、メソッドを終了します。

送信ボタンで、Page.IsValidを確認することを忘れないでください。

于 2012-12-19T17:40:25.823 に答える