Как сохранить состояние страницы ASP.NET WebForms между запросами - PullRequest
1 голос
/ 03 декабря 2011

Во-первых, это то, чего я хочу достичь:

Представьте себе страницу ASP.NET с GridView и некоторым другим управлением.Пользователь применяет некоторую подкачку, сортировку и фильтрацию к 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 и т. Д.)

Заранее спасибо

1 Ответ

4 голосов
/ 05 декабря 2011

Мне удалось решить эту проблему с помощью этого решения:

http://www.codeproject.com/KB/applications/persistentstatepage.aspx?fid=73573&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick&fr=26

Я сделал только две модификации:

1) Некомментированная строка 39, чтобы она работала сASP.NET 4:

// EnableEventValidation=false;

2) Изменен SavePageStateToPersistentMedium, чтобы всегда вызывать SavePageState () независимо от того, является ли он перенаправлением или нет

...