Использование ASP:CompareValidator для сравнения ASP:DropDownList с литеральным значением
Мы реализуем 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>
1 ответ
Поля, которые должны иметь значение в них перед отправкой формы, должны использовать обязательный валидатор полей.
http://msdn.microsoft.com/en-us/library/e78xxk8k(v=VS.71).aspx
Обратите внимание на следующее от Microsoft
Примечание. Если элемент управления вводом пуст, никакие функции проверки не вызываются и проверка завершается успешно. Используйте элемент управления RequiredFieldValidator, чтобы запретить пользователю пропускать элемент управления вводом.
Таким образом, вам нужен как обязательный валидатор поля, так и валидатор сравнения, чтобы это работало (хотя обычно просто оставляют список пустым (невыбранным) и используют обязательный валидатор поля, как правило, то, что сделано.