我有一个简单的页面,在初始加载时,数据绑定到一个GridView。这个gridview已经启用了排序和分页功能,并且被UpdatePanel包围。ASP.Net 2.0:浏览器后退按钮 - 无效的回发或回调参数
当用户执行以下,我收到此错误:
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
- 点击传呼机更改为 特定页面(可以说5)
- 点击一个链接导航到另一页
- 按下浏览器中的返回按钮以返回到带有GridView的页面
- 网格现在恢复为原始的网格 TE由于 浏览器(第1页)不跟踪,所以 用户点击进入页面5再次,导致错误
任何人都知道什么会导致此 ?它只在点击同一页面时似乎是个问题。如果在回访时点击了不同的页面,那很好。如果一列被排序,然后在回访中再次排序,那也没有问题。我不确定关于点击两次的具体内容是否会导致问题。
这里的寻呼机代码:
protected void gvResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvResults.DataSource = SearchResults;
gvResults.PageIndex = e.NewPageIndex;
gvResults.DataBind();
}
其中gvResults是在GridView和“SearchResult所”是存储在视图状态列表。
编辑
看来,虽然GridView控件不显示5页,当用户返回到页面(恢复到第1页),由于某种原因,浏览器做保存视图状态,并在第5页有gridview。因此,如果我点击第4页,并通过分页事件的代码,我可以看到它认为它的页面是5 ...即使显示的内容是第1页
故事的道德显然是当用户点击后退按钮返回到页面时,视图状态得到保存,但是显示的表不是。
这样做会有效;但我宁愿不关闭验证,如果有其他解决方法 – John 2009-07-10 15:47:10