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