У меня есть страница с CompareValidator:
<asp:textbox id="txtResponseDate" runat="server" />
<asp:requiredfieldvalidator id="rfvResponseDate" runat="server"
controltovalidate="txtResponseDate"
display="Dynamic"
errormessage="Date is required."
setfocusonerror="true">
</asp:requiredfieldvalidator>
<asp:comparevalidator id="cmvDate" runat="server"
controltovalidate="txtResponseDate"
display="Dynamic"
errormessage="Date must not be before today."
operator="GreaterThanEqual"
setfocusonerror="true"
type="Date">
</asp:comparevalidator>
В коде мы устанавливаем свойство ValueToCompare следующим образом:
If Not IsPostBack Then
cmvDate.ValueToCompare = DateTime.Now.ToString("d")
End If
Периодически (мы не можем различить образец), мы получаем следующую ошибку:
«Значение» свойства ValueToCompare «cmvDate» не может быть преобразовано в тип «Дата». "
Со стеком вызовов:
at System.Web.UI.WebControls.CompareValidator.ControlPropertiesValid()
at System.Web.UI.WebControls.BaseValidator.get_PropertiesValid()
at System.Web.UI.WebControls.BaseValidator.Validate()
at System.Web.UI.Page.Validate()
at System.Web.UI.Page.Validate(String validationGroup)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
Моей первой мыслью было что-то странное с форматом даты, но мы используем даты в Великобритании, последняя ошибка была 18 июля, поэтому ValueToCompare установлено на 18/07/2011. Я установил это вручную с помощью отладчика, и он работал нормально. У кого-нибудь есть яркие идеи относительно того, почему это может происходить?
- Я проверил код - больше нигде это не устанавливается.
- Используя отладчик, я дважды проверил при обратной передаче, и, как и ожидалось, это значение свойства сохраняется.