Keine der ASP.NET bereitgestellt Validatoren können Sie bedingte Validierung durchgeführt werden auf eine andere Steuerung basiert. Sie können dies jedoch erreichen, indem Sie einen CustomValidator verwenden, der die Überprüfung auf der Clientseite, der Serverseite oder bei beiden vornimmt (mindestens eine serverseitige Validierung wird empfohlen). Die Validatoren funktionieren gut in Verbindung mit Assistenten.
ASP.NET Markup Beispiel:
<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 für ClientValidationFunction:
<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>
-Code-Behind für OnServerValidate:
protected void ValidateOtherTextBox(object source, ServerValidateEventArgs args)
{
if (OptionsDropDownList.SelectedValue == "Other")
{
args.IsValid = (OtherTextBox.Text.Trim() != "");
}
}
Beachten Sie, dass Sie die Wahl haben, was immer Sie benötigen. Sie können die Javascript-Überprüfung komplett überspringen und den Code und das ClientValidationFunction
Attribut entfernen. Beachten Sie außerdem, dass das JavaScript auf das Zielsteuerelement verweist, indem Sie die ClientID-Eigenschaft verwenden. Dies ist erforderlich, da ASP.NET beim Ausgeben der Seite eine andere ID zuweist und Sie möchten, dass sie auf diese Weise der JavaScript-Methode zur Verfügung gestellt wird (Quelltext auf der Seite anzeigen und Sie sehen, dass der Name des Steuerelements einen zusätzlichen Wert enthält) Vorwahl usw.).