首先,这是我想要实现的目标:
想象一下带有GridView的ASP.NET页面和其他一些控件。用户对GridView应用一些分页,排序和过滤,然后单击一个链接并转到另一个页面。他或她最终可以浏览更多页面,然后返回到GridView页面。然后,当她离开页面时,她看到网格具有相同的分页/排序/过滤。
我可以轻松地对一个页面执行此操作,但我需要将此行为应用于几十页。
我希望得到以下效果:
String PageStateKey {
get { return "PageState_" + Page.UniqueID; }
}
void Page_PreRender() {
// this is executed in every postback, and saves page state for future requests
var pageState = GetCurrentPageState(); // gets an object with ViewState, query string, and form values
Session[PageStateKey] = pageState; // persist page state to session
}
void Page_Init() {
// this restores a page state saved in a previous request, if any
var restoredPageState = Session[PageStateKey];
if (restoredPageState != null) {
ApplySavedStateToPage(restoredPageState);
}
}
然后我的网页可以继承StatePage
或类似的东西。我发现了一些解决方案,但它们需要更改我的代码(即:使用自定义方法重定向页面而不是Response.Redirect等)。
提前致谢
答案 0 :(得分:4)
我能够使用这个解决方案来解决它:
我只做了两次修改:
1)取消注释第39行,使其适用于ASP.NET 4:
// EnableEventValidation=false;
2)将SavePageStateToPersistentMedium更改为始终调用SavePageState(),无论它是否为重定向