比较文本框值和隐藏字段值的验证

时间:2013-04-12 16:32:09

标签: c# asp.net validation

<asp:TextBox ID="txtAppSanctionLimit" runat="server" onblur="calcCustDebtEquity()">     </TextBox>
<asp:HiddenField ID="hfAppReqeustAmt" runat="server" Value="0" />

<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Proposed Limit is never greater than Request Limit" ControlToCompare="txtAppSanctionLimit"       ControlToValidate="txtRequestLimits" Operator="GreaterThan" 
       ValidationGroup="Report3" Display="none" ></asp:CompareValidator>

<asp:Button ID="btnLimtUpdate" runat="server" Text="Update" ValidationGroup="Report3" 
                onclick="btnLimtUpdate_Click"/>
<asp:ValidationSummary ID="ValidationSummary3" runat="server" ShowMessageBox="true" ShowSummary="false" ValidationGroup="Report3"  />

最重要的是在Visual Studio 2010下的defalt.aspx页面中使用过。 如果txtAppSanctionLimit值大于hfAppReqeustAmt值,我想显示验证消息。请注意,hfAppReqeustAmt值从带有查询的数据库中获取。

我该如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

接受的答案完全错误!

简单地说,你不能将CompareValidator与HiddenField一起使用。您需要使用CustomValidator。

请参阅:asp:RequiredFieldValidator does not validate hidden fields

答案 1 :(得分:-1)

目标

的属性
ControlToCompare="txtAppSanctionLimit"  

应该指向你隐藏的领域。

ControlToCompare="hfAppReqeustAmt"

并且应将ControlToValidate的属性指向您的用户数据输入字段。

ControlToValidate="txtAppSanctionLimit"

因为它当前指向示例代码中未显示的控件。

编辑:每个MSDN用于CompareValidator.ControlToCompare -

  

如果要比较的控件是隐藏的或位于容器内(例如   一个不可见的Panel控件),验证器执行   仅限服务器端验证。验证程序客户端脚本仅支持   可见的控制。