C# 文本框值和隐藏字段值的比较

C# 文本框值和隐藏字段值的比较,c#,asp.net,validation,C#,Asp.net,Validation,最重要的是,我在VisualStudio2010下的defalt.aspx页面中使用了这一切。 如果TXTAPPSUBSCRIPONLIMIT值大于hfAppReqeustAmt值,我想显示验证消息。请注意,hfAppReqeustAmt值是通过查询从数据库获取的 如何解决此问题。目标的属性 <asp:TextBox ID="txtAppSanctionLimit" runat="server" onblur="calcCustDebtEquity()"> </Text

最重要的是,我在VisualStudio2010下的defalt.aspx页面中使用了这一切。 如果TXTAPPSUBSCRIPONLIMIT值大于hfAppReqeustAmt值,我想显示验证消息。请注意,hfAppReqeustAmt值是通过查询从数据库获取的


如何解决此问题。

目标的属性

<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"  />
应该指向你隐藏的字段

ControlToCompare="txtAppSanctionLimit"  
ControlToValidate的属性应该指向用户数据输入字段

ControlToCompare="hfAppReqeustAmt"
因为它当前指向示例代码中未显示的控件

编辑:CompareValidator.ControlToCompare的每个-

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


公认的答案完全不正确

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


请参阅:

是否要在按钮的单击事件中显示此内容?如果是,那么你可以简单地使用javascript或jquery。你是想在浏览器(在客户端)或代码隐藏(在服务器上)中解决这个问题吗?你可以使用范围验证器吗?我不会完全依赖客户端来执行任何真正的业务逻辑。你有没有理由不把这个放在代码后面?见Nico Westerdale的帖子。除非使用CustomValidator,否则不能在验证中使用隐藏字段。@dshapiro-如果答案无效或明显不正确,我可以删除该答案或将其改为指向其他地方。请查看包含的编辑和评论,并提出改进建议。MSDN中的这则宣传语听起来似乎应该适用于HiddenFields,但似乎有一个特定于HiddenFields的特殊情况,本文中未提及。我今天遇到了这个问题,如果使用asp:HiddenField作为目标(ControlToValidate)或引用(ControlToCompare),.NET将抛出一个大的ol异常。@dshapiro-您使用的是哪个.NET版本?如果我可以重新编程,我会记录一个连接错误,至少让文档澄清并链接到这里。我在.net 4.5.1下运行的项目中遇到过它,但根据其他发现(通过谷歌),我怀疑这运行得更远。这不是RequiredFieldValidator。我知道,但逻辑仍然适用,如果我没记错的话
ControlToValidate="txtAppSanctionLimit"