从c#后面的代码启用/禁用验证

本文关键字:验证 启用 代码 | 更新日期: 2024-06-14 06:28:22

我有一些为表单编写的asp代码。其中一个字段必须有3种类型的验证,其中2种始终启用,另2种必须"启用",只有在从下拉列表中选择了特定值的情况下。我该如何完成这项任务?默认情况下,我已经禁用了2个额外的验证,我想在下拉列表特定的选择上重新激活。

我在这里给你看我的代码。ASP.NET代码:

<tr>
<td class="style1">
<asp:Label ID="LabelPiva" runat="server" Text="Partita IVA" meta:resourcekey="LabelPiva" Font-Bold="True" />
</td>
<td>
<asp:TextBox ID="pivaTextBox" runat="server" Text='<%# Bind("piva") %>' 
    MaxLength="50" Width="400px" />

<asp:RequiredFieldValidator ID="RequiredPiva" runat="server" 
    ControlToValidate="pivaTextBox" 
    ErrorMessage="<%$ Resources:Resource, CampoObbligatorio %>" Display="Dynamic" 
    CssClass="little_text" />
<asp:CustomValidator ID="PivaEsistente" runat="server" 
    ErrorMessage="Partita IVA esistente nel database" meta:resourcekey="PivaEsistente" 
    ControlToValidate="pivaTextBox" CssClass="little_text" Display="Dynamic" 
    onservervalidate="PIVAEsistente_ServerValidate"></asp:CustomValidator>
<asp:RegularExpressionValidator ID="PivaSize" runat="server"
    ControlToValidate="pivaTextBox" CssClass="little_text" Display="Dynamic"
    ErrorMessage="Controllare la lunghezza della partita iva. 11 caratteri e solo numeri." 
    ValidationExpression="^[0-9]{11}$" Enabled="False" ValidationGroup="soloItalia">
    </asp:RegularExpressionValidator>
<asp:CustomValidator ID="PivaErrata" runat="server" 
    ErrorMessage="Partita IVA non corretta. Controllare le cifre." meta:resourcekey="PivaErrata" 
    ControlToValidate="pivaTextBox" CssClass="little_text" Display="Dynamic" 
    onservervalidate="ValidatePI"  Enabled="False" ValidationGroup="soloItalia"></asp:CustomValidator>
</td>
</tr>

只有当dropdownlist达到"it"值时,才必须激发id为PivaErrata的CustomValidator和id为PivaSize的RegularExpressionValidator。这是c#中截取dropdownlist值的代码:

protected void nazioneDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddl = (DropDownList)sender;
    DropDownList ddlProv = (DropDownList)FormUser.FindControl("provinciaDropDownList");

    if ("it".Equals(ddl.SelectedValue))
    {
        ddlProv.Enabled = true;

    }
    else
    {
        ddlProv.SelectedIndex = 0;
        ddlProv.Enabled = false;
    }
}

正如你所看到的,当特定值"it"在国家下拉列表中被激发时,另一个下拉列表就会被启用。我也想激活验证控件。我为这两个验证分配了一个验证组,但我不确定如何同时"启用"它们。有什么帮助吗?非常感谢。

从c#后面的代码启用/禁用验证

您可以使用Validation controlsenabledisableEnabled属性。

试试这个:

if (ddl.SelectedItem.ToString().Equals("it"))
    {
        ddlProv.Enabled = true;
       //add these two statements to enable
       PivaSize.Enabled=true;
       PivaErrata.Enabled=true;
    }
    else
    {
        ddlProv.SelectedIndex = 0;
        ddlProv.Enabled = false;
       //add these two statements to disable
       PivaSize.Enabled=false;
       PivaErrata.Enabled=false;
    }