5

以下代码用于使用自定义验证器验证 DropDownList 控件。

默认1.aspx

<td>
        <asp:DropDownList ID="DDL_Product" runat="server" Height="21px" Width="128px">
             <asp:ListItem>Select</asp:ListItem>
             <asp:ListItem>Nokia</asp:ListItem>
             <asp:ListItem>LG</asp:ListItem>
             <asp:ListItem>Samsung</asp:ListItem>
             <asp:ListItem>sony</asp:ListItem>
             <asp:ListItem>Micromax</asp:ListItem>
             <asp:ListItem>Karbonn</asp:ListItem>
             <asp:ListItem>Apple</asp:ListItem>
         </asp:DropDownList>
    </td>
    <td>
         <asp:CustomValidator ID="cv1" Display="Dynamic" ControlToValidate = "DDL_Product" OnServerValidate="ddl_server" runat="server" ForeColor="Red" ErrorMessage="Please Select the Product"></asp:CustomValidator>
    </td>

Default1.aspx.cs

protected void ddl_server(object sender, ServerValidateEventArgs e)
{
     if (e.Value.selectedIndex <= 0)
     {
        e.IsValid = true;
     }
     else
     {
        e.IsValid = false;
     }
}

上述验证无效。我不知道如何使用这个控件并验证 DropDownList。请更正错误。

4

3 回答 3

9

您应该为此使用 RequireValidator。

1)为“选择”项添加值,将用于验证初始值:

<asp:DropDownList ID="DDL_Product" runat="server" Height="21px" Width="128px">
       <asp:ListItem Value="0">Select</asp:ListItem>
       /*Rest of items*/
</asp:DropDownList>

2)然后像这样使用RequireValidator,比较来自DDL的初始值:

<asp:RequiredFieldValidator InitialValue="0" 
    ID="rfvDDL_Product" Display="Dynamic" 
    ControlToValidate="DDL_Product"
    runat="server"  Text="*" 
    ErrorMessage="Please Select the Product"
    ForeColor="Red">
</asp:RequiredFieldValidator>

编辑:

为了解释,来自 MSDN:

CustomValidator 类

使用 CustomValidator 控件为输入控件提供用户定义的验证功能。CustomValidator 控件是与其验证的输入控件分开的控件,它允许您控制验证消息的显示位置。

必填字段验证器类

使用此控件使输入控件成为必填字段。如果输入控件的值在失去焦点时未从 InitialValue 属性更改,则输入控件验证失败。

于 2013-07-15T13:50:16.583 回答
1

尝试AutoPostBack="true"DropDownList.

<asp:DropDownList ID="DDL_Product" runat="server" Height="21px" Width="128px"
                  AutoPostBack="true">

如果只是为了验证是否选择了一个值,请考虑使用 aRequiredFieldValidator代替。

于 2013-07-15T13:52:40.210 回答
0

只需ValidateEmptyText="true"按如下方式添加到您的自定义验证器,也可以验证是否未选择任何内容:

<asp:CustomValidator ID="cv1" Display="Dynamic" 
                     ControlToValidate = "DDL_Product" 
                     OnServerValidate="ddl_server" 
                     runat="server" ForeColor="Red" 
                     ErrorMessage="Please Select the Product"
                     ValidateEmptyText="true">
</asp:CustomValidator>
于 2021-04-28T12:51:24.440 回答