Pad*_*ddy 5 vb.net asp.net validation
我有一个带有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>
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,我们设置ValueToCompare属性,如下所示:
If Not IsPostBack Then
cmvDate.ValueToCompare = DateTime.Now.ToString("d")
End If
Run Code Online (Sandbox Code Playgroud)
间歇性地(我们无法辨别模式),我们得到以下错误:
"'cmvDate'的ValueToCompare属性的值''无法转换为'Date'类型."
使用以下调用堆栈:
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)
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是日期格式奇怪,但我们使用的是英国日期,最后一次错误发生在7月18日,所以ValueToCompare设置为18/07/2011.我使用调试器手动设置它,它工作正常.任何人都有任何明智的想法,为什么会发生这种情况?
'cmvDate'的ValueToCompare属性的值''无法转换为'Date'类型.
此错误消息表明,在ValueToCompare您的rangeValidator本身(不是您正在验证的控件)的验证属性中,未设置.这可以是你写这行:
If Not IsPostBack Then
cmvDate.ValueToCompare = DateTime.Now.ToString("d")
End If
Run Code Online (Sandbox Code Playgroud)
没有Page_Init事件.
ValueToCompare到Init事件,同时删除对Postback的检查.Not IsPostBack).