1

別の「私は答えを知っていると確信していますが、念のためにとにかく尋ねます」という質問。
(「ない」と思う答え)

<asp:CustomValidator>コードを記述せずに ASP.NET (.Net 4.0) でバリデーターをチェーンする組み込みの方法はありますか? 別のバリデーターがその検証に合格した場合にのみ、あるバリデーターがチェックされるようにするには?

たとえば、2 つの<asp:DropDownList>コントロールがあり、どちらもまったく同じオプションがあり、最初に「空白」のエントリがあるとします (事前に何も選択したくないため、ユーザーが意識的に決定する必要があるため)...

<asp:DropDownList runat="server" id="dd1">
  <asp:ListItem Value="-1" Text=""/>
  <asp:ListItem Value="1">One</ListItem>
  <asp:ListItem Value="2">Two</ListItem>
  ...
</asp:DropDownList>
<asp:DropDownList runat="server" id="dd2">
  ... with identical list of items as dd1

<asp:CompareValidator>上記の各コントロールに関連付けられた 2 つのコントロールを配置し<asp:DropDownList>ます。

<asp:CompareValidator runat="server" id="val1" ControlToValidate="dd1"
  ValueToCompare="-1" Operation="Not Equal" ErrorMessage="Select DD1" />
<asp:CompareValidator runat="server" id="val2" ControlToValidate="dd2"
  ValueToCompare="-1" Operation="Not Equal" ErrorMessage="Select DD2" />

これらは正常に機能し、元の「空白」エントリが選択された項目である場合、適切なエラーが表示されます。

ただし、2つのアイテムを異なるものにする必要があるため、別のアイテムを追加し<asp:CompareValidator>ます...

<asp:CompareValidator runat="server" id="val3" ControlToValidate="dd1"
  ControlToCompare="dd2" Operation="Not Equal" ErrorMessage="DD2 must be different to DD1" />

この結果、 と の両方が選択した項目として「空白」を持ってDD1いる場合、3 つのバリデータすべてがフォームの送信時に起動します。が正常に検証された場合にのみ検証する必要DD2があるため、これは正しくありません。val3val2

明らかな解決策は、代わりに a を使用し、状況を自分で処理することです...しかし、有効な場合にのみ検証<asp:CustomValidator>する組み込みの方法があるかどうかを尋ねると思いました。val3val2

4

0 に答える 0