Page.IsValid总是返回false

时间:2010-08-17 08:33:43

标签: c# asp.net

我按钮上的原因验证为true。我正在检查c#代码中的Page.IsValid。但它总是回归虚假价值?

6 个答案:

答案 0 :(得分:19)

我知道为时已晚,希望有人会受益

如果您在网页中有 Requiredfieldvalidators ,则需要将 validataiongroup 属性设置为每个 RequiredValidator

然后在代码中你要检查

Page.Validate("validategroupname");
if(!Page.IsValid()){
 // your code
}

这解决了问题

答案 1 :(得分:17)

以下是帮助我调试问题的代码段:

foreach (BaseValidator validator in Page.Validators)
{
    if (validator.Enabled && !validator.IsValid)
    {
        // Put a breakpoint here
        string clientID = validator.ClientID;
    }
}

答案 2 :(得分:2)

在检查其有效状态之前,您是否曾致电Page.Validate

答案 3 :(得分:1)

如果您的按钮有CauseValidation = "true"并且您有其他所需的控件,则会出现此行为。尝试设置CauseValidation = "false"或检查按钮和关联控件(explanation)的ValidationGroup属性。

答案 4 :(得分:0)

这个问题发生在一个注释掉的asp.net验证器上。 例如

<!--
<asp:label id="labName" runat="server" Text="Name"
AssociatedControlID="tbName"></asp:label> <asp:textbox id="tbName"
runat="server"></asp:textbox> <asp:requiredfieldvalidator
id="ReqFieldValID" runat="server" ControlToValidate="tbName"
ErrorMessage="Please enter your name"></asp:requiredfieldvalidator>
-->

尽管在HTML注释中包含了验证器,但由于注释的验证器,我的页面仍然无法通过验证。

解决方案:添加验证摘要以确定问题。删除注释的验证程序以解决问题。

答案 5 :(得分:-1)

我知道这可能为时已晚:但你有一个隐藏的验证器吗?