Asp.net RegisterforEventValidation后的.net ListView事件验证错误

Asp.net RegisterforEventValidation后的.net ListView事件验证错误,asp.net,listview,eventvalidation,Asp.net,Listview,Eventvalidation,我定义了以下Listview <asp:ListView ID="reportData" EnableSortingAndPagingCallback="True" AllowPaging="True" AllowSorting="True" PageSize="20" OnLayoutCreated="LoadReport" onsorting="reportData_C

我定义了以下Listview

<asp:ListView 
        ID="reportData" 
        EnableSortingAndPagingCallback="True"
        AllowPaging="True"
        AllowSorting="True"
        PageSize="20" 
        OnLayoutCreated="LoadReport"
        onsorting="reportData_Cause_Sorting" 
        OnPagePropertiesChanging="reportData_PagePropertiesChanging"
        runat="server">
我的初始页面加载运行正常,但是当我点击页面导航时,我会被发送到codebehind并在收到错误之前完成页面加载

回发或回调参数无效。已启用事件验证 在配置或页面中使用。为了安全 为此,此功能验证回发或回调的参数是否正确 事件源自最初呈现的服务器控件 他们。如果数据有效且符合要求,请使用 ClientScriptManager.RegisterForEventValidation方法,以便 注册回发或回调数据以进行验证

我只是不明白为什么在我注册了两个项目进行事件验证之后,我仍然会收到错误。我甚至都没参加过RaiseCallback活动

我对这些控件完全是个新手,也绝不是.net专家。任何帮助或建议都将不胜感激

试试这个简单的例子。
url传递值​​寻呼系统



<asp:ListView ID="CountriesListView" DataSourceID="ContactsDataSource" runat="server"
    DataKeyNames="FirstName" OnItemCommand="DepartmentsListView_SelectedIndexChanged">
    <LayoutTemplate>
        <table cellpadding="4" width="500" runat="server" id="tblCountries">
            <tr id="Tr1" runat="server">
                <th id="Th0" runat="server">
                    ID
                </th>
                <th id="Th1" runat="server">
                    Code
                </th>
                <th id="Th2" runat="server">
                    Name
                </th>
            </tr>
            <tr runat="server" id="itemPlaceholder" />
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <asp:LinkButton runat="server" ID="SelectButton" Text="Select" CommandName="Select" />
            </td>
            <td>
                <asp:Label ID="CountryCodeLabel" runat="server" Text='<%# Eval("EmployeeID")%>' />
            </td>
            <td>
                <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("FirstName")%>' />
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>


 <asp:DataPager runat="server" ID="DataPager2" PageSize="3" PagedControlID="CountriesListView"
    QueryStringField="pageNumber">
    <Fields>
        <asp:NumericPagerField />
    </Fields>
</asp:DataPager>

身份证件
代码
名称



    <asp:SqlDataSource ID="ContactsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:conecec %>"
    SelectCommand="SELECT [EmployeeID], [FirstName], [LastName] FROM Employees">
</asp:SqlDataSource>


我找到了答案。我调用了我的函数来加载报表数据,并在OnLoad和Render中将其绑定到ListView。当我从OnLoad中删除额外呼叫时,我不再收到该消息。但是,分页仍然不起作用,但问题已转移到代码中的另一个位置:)

我认为您不需要更改
EventValidation
或使用
RegisterForEventValidation

将此代码放入
Page\u Load
事件

if (!IsPostBack)
  {
     BindData();
  }
并且不要忘记修改
列表视图
页面属性更改
事件:

protected void lstProducts_PagePropertiesChanged(object sender, EventArgs e)
    {
        BindData();
    }

我只想指出,我发现这篇文章对让一切正常运转非常有帮助
    <asp:SqlDataSource ID="ContactsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:conecec %>"
    SelectCommand="SELECT [EmployeeID], [FirstName], [LastName] FROM Employees">
</asp:SqlDataSource>
if (!IsPostBack)
  {
     BindData();
  }
protected void lstProducts_PagePropertiesChanged(object sender, EventArgs e)
    {
        BindData();
    }