なしのバリデータを使用して、別の制御に基づいて、条件付きの検証を実行することができませんようにあなたは、ドロップダウンリストで選択で、その後誰のオプションを確認してください。ただし、これは、クライアント側、サーバー側、またはその両方で検証を実行するCustomValidatorを使用して行うことができます(少なくとも、サーバー側の検証が推奨されます)。バリデーターはウィザードとうまく連携します。
ASP.NETマークアップ例:ClientValidationFunctionため
<asp:DropDownList ID="OptionsDropDownList" runat="server">
<asp:ListItem Text="Website" />
<asp:ListItem Text="Search Engine" />
<asp:ListItem Text="Other" />
</asp:DropDownList>
<asp:TextBox ID="OtherTextBox" runat="server" />
<asp:CustomValidator ID="custvOptionsDropDownList" runat="server" ControlToValidate="OptionsDropDownList"
ValidateEmptyText="true" Display="Dynamic" ClientValidationFunction="validateOtherTextBox"
ErrorMessage="This field is required!" OnServerValidate="ValidateOtherTextBox" />
Javascriptを:
<script type="text/javascript" language="javascript">
function validateOtherTextBox(event, args) {
var textbox = document.getElementById('<%= OtherTextBox.ClientID %>').value;
if (args.Value == 'Other')
args.IsValid = (textbox != '');
else
args.IsValid = true;
}
</script>
コードビハインドOnServerValidate用:
protected void ValidateOtherTextBox(object source, ServerValidateEventArgs args)
{
if (OptionsDropDownList.SelectedValue == "Other")
{
args.IsValid = (OtherTextBox.Text.Trim() != "");
}
}
必要なものを実装するのはあなたの選択です。 Javascriptの検証を完全にスキップし、そのコードとClientValidationFunction
属性を削除することができます。また、Javascriptは、ClientIDプロパティを使用してターゲットコントロールを参照することに注意してください。これは、ページが出力されたときにASP.NETが別のIDを割り当てて、この方法でJavascriptメソッドに提供する必要があるので必要です(ページのソースを表示すると、コントロール名に余分な接頭辞など)。