使用DropDownList的ASP.Net自定义验证器控件

时间:2013-07-15 13:20:08

标签: asp.net

以下代码用于使用Custom Validator验证DropDownList控件。

Default1.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。请更正错误。

3 个答案:

答案 0 :(得分:8)

你应该使用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 Class

  

使用CustomValidator控件提供用户定义的验证   输入控件的功能。 CustomValidator控件是一个   从它验证的输入控件中单独控制,这允许你   控制验证消息的显示位置。

RequiredFieldValidator Class

  

使用此控件可使输入控件成为必填字段。输入   如果控制值的值没有改变,则控制失败验证   失去焦点后的InitialValue属性。

答案 1 :(得分:1)

尝试在AutoPostBack="true"

中添加属性DropDownList
<asp:DropDownList ID="DDL_Product" runat="server" Height="21px" Width="128px"
                  AutoPostBack="true">

如果只是为了验证是否选择了某个值,请考虑改为使用RequiredFieldValidator

答案 2 :(得分: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>