別の「私は答えを知っていると確信していますが、念のためにとにかく尋ねます」という質問。
(「ない」と思う答え)
<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
があるため、これは正しくありません。val3
val2
明らかな解決策は、代わりに a を使用し、状況を自分で処理することです...しかし、有効な場合にのみ検証<asp:CustomValidator>
する組み込みの方法があるかどうかを尋ねると思いました。val3
val2