本文介绍了与CompareValidator间歇性错误 - ValueToCompare特性是QUOT;"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有上有一个CompareValidator的页面:
< ASP:文本框的id =txtResponseDate=服务器/>
< ASP:的RequiredFieldValidator ID =rfvResponseDate=服务器
的ControlToValidate =txtResponseDate
显示=动态
errormessage的=日期是必需的。
setfocusonerror =真正的>
< / ASP:&的RequiredFieldValidator GT;
< ASP:comparevalidator ID =cmvDate=服务器
的ControlToValidate =txtResponseDate
显示=动态
errormessage的=日期不得早于今天。
运算符=GreaterThanEqual
setfocusonerror =真
类型=日期>
< / ASP:comparevalidator>
在code的背后,我们设置ValueToCompare属性,像这样:
如果没有的IsPostBack然后 cmvDate.ValueToCompare = DateTime.Now.ToString(D)万一
间歇性(我们不能辨别的模式),我们得到以下错误:
cmvDate'的ValueToCompare属性'值''不能转换为类型'日期'。
随着调用堆栈:
在System.Web.UI.WebControls.CompareValidator.ControlPropertiesValid()
在System.Web.UI.WebControls.BaseValidator.get_PropertiesValid()
在System.Web.UI.WebControls.BaseValidator.Validate()
在System.Web.UI.Page.Validate()
在System.Web.UI.Page.Validate(字符串的ValidationGroup)
在System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串eventArgument)
我首先想到的是一些奇怪的日期格式,但是我们使用的是英国的日期是7月18日最后一个错误,所以ValueToCompare被设置为18/07/2011。我设置这种使用调试器的手动,它工作得很好。任何人任何好主意,为什么这可能会发生?
- 我已经检查了code - 有没有其他地方,这是被设置
- 使用调试器,我在双回送检查,果然,这个属性值被保留。
解决方案
This error message says, that in moment of validation property ValueToCompare
of your rangeValidator itself (not the control you are validating) is not set. This can be if you wrote this lines:
If Not IsPostBack Then
cmvDate.ValueToCompare = DateTime.Now.ToString("d")
End If
not in Page_Init
event.
- Move the code of setting the
ValueToCompare
to the Init event, with removing the check for Postback. - Check, what value has this property during data check (may be, you should remove check for
Not IsPostBack
). - Set this property before check is occured.
这篇关于与CompareValidator间歇性错误 - ValueToCompare特性是QUOT;"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!