加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – CompareValidator的间歇性错误 – ValueToCompare属

发布时间:2020-12-16 07:16:12 所属栏目:asp.Net 来源:网络整理
导读:我有一个带有CompareValidator的页面: asp:textbox id="txtResponseDate" runat="server" /asp:requiredfieldvalidator id="rfvResponseDate" runat="server" controltovalidate="txtResponseDate" display="Dynamic" errormessage="Date is required." set
我有一个带有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

间歇性地(我们无法辨别模式),我们得到以下错误:

“’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)

我的第一个想法是日期格式奇怪,但我们使用的是英国日期,最后一次错误发生在7月18日,所以ValueToCompare设置为18/07/2011.我使用调试器手动设置它,它工作正常.任何人都有任何明智的想法,为什么会发生这种情况?

>我检查了代码 – 没有其他地方可以设置.
>使用调试器,我在回发时进行了双重检查,并且正如预期的那样,保留了此属性值.

解决方法

The value ” of the ValueToCompare property of ‘cmvDate’ cannot be converted to type ‘Date’.

此错误消息表示,在验证时刻,您的rangeValidator本身(不是您正在验证的控件)的ValueToCompare属性未设置.这可以是你写这行:

If Not IsPostBack Then
    cmvDate.ValueToCompare = DateTime.Now.ToString("d")   
End If

不在Page_Init事件中.

>将ValueToCompare的设置代码移动到Init event,同时删除对Postback的检查.>检查,在数据检查期间具有此属性的值(可能是,您应该删除对Not IsPostBack的检查).>在检查发生之前设置此属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读