2009-06-03 7 views
0

Когда я изменяю ddl.Visible = true (он изменяется на частичной обратной стороне/обновлении с другого события элемента формы) RequiredFieldValidator не будет срабатывать?RequiredFieldValidator не срабатывает при изменении видимости ControlToValidate

ПРИМЕЧАНИЕ. Это не вопрос о том, как использовать RequiredFieldValidator в нормальных обстоятельствах. Моя форма имеет каскадные выпадающие списки, которые все динамически построены с включенной и включенной видимостью.

<asp:DropDownList ID="ddl" Visible="false" AutoPostBack="True" runat="server">                
</asp:DropDownList> 
<asp:RequiredFieldValidator ControlToValidate="ddl" 
ID="RequiredFieldValidator1" 
runat="server" ErrorMessage="Required"></asp:RequiredFieldValidator>  

ответ

2

Вы должны установить свойство InitialValue на вашем RequiredFieldValidator, так что он знает, когда значение DropDownList изменилось. Например, на раскрывающемся списке с этими значениями:

  • Please Select
  • Dog
  • Cat
  • Bird

Вы бы добавить этот атрибут

InitialValue="Please Select" 

RequiredFieldValidator.

Не зная, изменилось ли значение, валидатор не может знать, выполнил ли пользователь его требование.

+0

InitalValue имеет значение по умолчанию String.Empty, что является моим первым ListItem. Валидаторы работают нормально, пока я не переключаю видимость. –

+0

Можете ли вы разместить все соответствующие коды, пожалуйста? В вашем вопросе не отображается значение, заданное для InitialValue. –

+0

Андрей, вы правы, копайте глубже (слишком много динамических, что делает мою голову вращением). Я обнаружил, что значением по умолчанию для ListItem было 0, а не String.Empty. Я пошел вперед и установил, что мой InitalValue был явным. Спасибо –

Смежные вопросы