пользовательский валидатор на стороне сервера в asp. net, если в качестве скидки применяется раскрывающееся "да", тогда текстовое поле должно быть обязательным, в противном случае текстовое поле не обязательно
HTML
<td>
<asp:DropDownList ID="ddlDiscountApplicable" runat="server" CssClass="wd150">
<asp:ListItem Text="--Select--" Value="0"></asp:ListItem>
<asp:ListItem Text="Yes" Value="Yes"></asp:ListItem>
<asp:ListItem Text="No" Value="No"></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator10" runat="server" ErrorMessage="Select Discount Applicable"
ControlToValidate="ddlDiscountApplicable" InitialValue="0" Display="Dynamic" ValidationGroup="NameValidator"
ForeColor="Red">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr id="DiscountRow" style="display:none">
<td style="width:170px" runat="server" id="labelDiscount">
Discount
</td>
<td runat="server" id="TextboxDiscount">
<asp:TextBox ID="DiscountText" runat="server" CssClass="wt150"></asp:TextBox>
<asp:CustomValidator runat="server" id="cusCustom" controltovalidate="DiscountText" onservervalidate="checkDiscountApplicable" errormessage="Enter Discount" />
</td>
код позади
protected void checkDiscountApplicable(object sender, ServerValidateEventArgs e){
var discount = ddlDiscountApplicable.SelectedValue;
var validData = true;
var val = e.Value;
if (discount == "Yes")
{
if (val == null || val == "")
{
validData = false;
}
}
else
{
e.IsValid = true;
}
if (validData)
e.IsValid = true;
else
e.IsValid = false;
}