【发布时间】:2014-03-03 07:23:40
【问题描述】:
我有一个 ListView 控件,如下所示(为了在此处发布,我已从 ItemTemplate 中删除了值):
<asp:ListView ID="ListView1" runat="server" DataSourceID="MyDataSource">
<LayoutTemplate>
<div id="requests" runat="server">
<asp:Panel runat="server" id="itemPlaceholder"></asp:Panel>
</div>
<asp:DataPager runat="server" ID="DataPager" PageSize="3">
<Fields>
<asp:NumericPagerField ButtonCount="10" PreviousPageText="<--" NextPageText="-->" />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<div ID="itemPlaceholder" class="request" runat="server">
<asp:LinkButton ID="button" runat="server" Text='...' CommandName="..."
CommandArgument='...' OnClick="..."
style="...">
</asp:LinkButton> -
</div>
</ItemTemplate>
</asp:ListView>
此 ListView 作为用户控件 (.ascx) 存在,我已将其嵌入到 ASPX 网页中。
正如我所料,当网页加载时,对于一个包含 9 个项目的列表,我会得到 3 个页面的 3 个项目。
当我单击转到下一页时,该页面会正确加载下一组项目...但仅持续一秒钟。然后发生了一件奇怪的事情。页面在页面内嵌入了自己的副本 6 次,每次都在页面内表单上的一个字段下方。
如果我随后尝试转到下一页或上一页,则会出现 ASP.NET 服务器错误:
此页面的状态信息无效,可能已损坏。
在堆栈跟踪中,它显示以下错误:
FormatException:输入不是有效的 Base-64 字符串,因为它包含非基本字符、两个以上的填充字符或填充字符中的非空白字符。
ViewStateException: 无效的视图状态。
我能够在我的浏览器 IE8 和 Chrome 上复制它。
【问题讨论】:
-
看起来问题出在数据绑定中。请提供服务器代码和数据源代码。