以下代码用于使用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。请更正错误。
答案 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控件提供用户定义的验证 输入控件的功能。 CustomValidator控件是一个 从它验证的输入控件中单独控制,这允许你 控制验证消息的显示位置。
使用此控件可使输入控件成为必填字段。输入 如果控制值的值没有改变,则控制失败验证 失去焦点后的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>