Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在忽略Asp.net webforms-CausesValidation=true_Asp.net_.net - Fatal编程技术网

正在忽略Asp.net webforms-CausesValidation=true

正在忽略Asp.net webforms-CausesValidation=true,asp.net,.net,Asp.net,.net,我在我们的页面上遇到了一个问题,并缩小了示例范围,如下所示: ASPX: 请注意,下拉列表的autopostback设置为true,causesvalidation设置为true 现在,如果我更改下拉列表并让页面加载,它将正常工作。类似地,如果我只是单击按钮,那么它工作正常。但是,如果我更改下拉列表,然后在页面完全重新加载之前,单击按钮,则会出现以下错误: 在进行验证之前,无法调用Page.IsValid。应该在事件处理程序中查询CausesValidation=True并启动回发的控件,或者在

我在我们的页面上遇到了一个问题,并缩小了示例范围,如下所示:

ASPX:

请注意,下拉列表的autopostback设置为true,causesvalidation设置为true

现在,如果我更改下拉列表并让页面加载,它将正常工作。类似地,如果我只是单击按钮,那么它工作正常。但是,如果我更改下拉列表,然后在页面完全重新加载之前,单击按钮,则会出现以下错误:

在进行验证之前,无法调用Page.IsValid。应该在事件处理程序中查询CausesValidation=True并启动回发的控件,或者在调用Page.Validate之后查询。

现在,我可以通过将
Page.Validate()
放在检查
Page.IsValid
的前面来解决这个问题,但是我很好奇是否有人能解释为什么会发生这种情况。我希望已经发送了两个回发,每个回发都会导致验证,每个回发都应该有效


ASP.net 4.5,以防万一会有所不同

     <div>
        <asp:DropDownList ID="ddlSomething" runat="server" 
                     CausesValidation="true" AutoPostBack="true">
            <asp:ListItem>One</asp:ListItem>
            <asp:ListItem>Two</asp:ListItem>
        </asp:DropDownList>
        <asp:Button ID="btnFilter" runat="server" Text="Filter" />
    </div>
Partial Class ValTest
    Inherits System.Web.UI.Page

    Protected Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click

        BindGrid()

    End Sub

    Protected Sub ddlSomething_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlSomething.SelectedIndexChanged

        BindGrid()

    End Sub

    Private Sub BindGrid()

        If (Page.IsValid) Then

            'Do something that takes a little time here
            System.Threading.Thread.Sleep(2000)

            Response.Write("Done")

        End If

    End Sub

End Class