0

我们正在实现一个 ASP:CompareValidator,但它没有像我们预期的那样工作。

在表单上有一个 ASP:DropDownList,其中 DropDown 中的一项是:

<Please select a class>

该文本还包括角括号。

我们要确保用户从 DropDown 中选择了某些内容,因此我们不希望在 DropDown 显示时保存数据:

<Please select a class>

您能否检查我的标记并告诉我为什么当用户单击更新按钮时会显示验证错误消息?

<asp:TemplateField HeaderText="Class:">
    <EditItemTemplate>
        <asp:DropDownList 
            ID="DropDownListClass" 
            Runat="server"
            DataSourceID="SqlDataSourceClasses"
            DataTextField = "ClassName"
            DataValueField="ID"
            SelectedValue='<%# Bind("ClassID") %>'
            ForeColor="Blue">
        </asp:DropDownList>

        <asp:CompareValidator 
            runat="server" 
            id="ClassMustBeSelected" 
            controltovalidate="DropDownListClass" 
            ValueToCompare="<Please select a class>"
            operator="Equal" 
            type="String" 
            errormessage="Please select a class!">
        </asp:CompareValidator>
    </EditItemTemplate>
</asp:TemplateField>

DropDown 的值来自此数据源:

<asp:SqlDataSource 
    ID="SqlDataSourceClasses" 
    runat="server" 

    ConnectionString="<%$ ConnectionStrings:Knowledge Academy %>" 

    SelectCommand=
        "SELECT '' AS ID, '<Please select a class>' AS ClassName, '' AS Grade
   UNION SELECT ID, ClassName + ' *** Grade: ' + Grade AS ClassName, Grade 
           FROM Classes
       ORDER BY 2, 3">
</asp:SqlDataSource>
4

1 回答 1

2

在提交表单之前必须在其中包含值的字段应使用必填字段验证器。

http://msdn.microsoft.com/en-us/library/e78xxk8k(v=VS.71).aspx

请注意以下来自微软

注意 如果输入控件为空,则不调用验证函数并且验证成功。使用RequiredFieldValidator 控件来防止用户跳过输入控件。

因此,您需要一个必填字段验证器和一个比较验证器才能正常工作(尽管通常只需将列表留空(未选中)并使用必填字段验证器通常是已完成的。

于 2012-12-14T17:56:30.420 回答