我们正在实现一个 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>