C# Page.IsValid始终返回false

C# Page.IsValid始终返回false,c#,asp.net,C#,Asp.net,我在按钮上有正确的原因验证。我正在检查页面。c#code中的IsValid。但它总是返回假值?在检查其有效状态之前,您是否已调用?如果您的按钮具有CauseValidation=“true”并且您具有其他一些必需的控件,则该行为是预期的。尝试设置按钮和相关控件的属性() 我知道为时已晚,希望有人能从中受益 如果网页中有RequiredFieldValidator,则需要将ValidationGroup属性设置为每个RequiredValidator 然后在代码中你必须检查 Page.Valida

我在按钮上有正确的原因验证。我正在检查
页面。c#code中的IsValid
。但它总是返回假值?

在检查其有效状态之前,您是否已调用?

如果您的按钮具有
CauseValidation=“true”
并且您具有其他一些必需的控件,则该行为是预期的。尝试设置按钮和相关控件的属性()

我知道为时已晚,希望有人能从中受益

如果网页中有RequiredFieldValidator,则需要将ValidationGroup属性设置为每个RequiredValidator

然后在代码中你必须检查

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

这解决了问题

我知道这可能太晚了,但是:您有隐藏的验证器吗?

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

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

对于我来说,此问题发生在已注释掉的asp.net验证程序中。 e、 g


尽管有一个用HTML注释包装的验证程序,我的页面仍然由于注释的验证程序而未能通过验证


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

否我没有调用Page.validate。能否提供一些代码@sashaeve,我需要使causevalidation为true。您必须在检查Page.isValid之前调用Page.Validate。我添加了一个带有验证组行为解释的链接。isValid()不是有效方法。只需使用Page.IsValid。
<!--
<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>
-->