|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.09.2011, 21:01 | #1 |
Форумчанин
Регистрация: 09.02.2011
Сообщений: 150
|
State Management в ASP.NET: когда используются partial postbacks
1. Я в ASP.NET новичок. Сейчас мне встретилась написанная кем-то форма на ASP.NET WebForms c использованием DevExpress, которую надо доработать; и тут возникли вопросы относящиеся к page-based State Management (ViewState и проч); и мне самому трудно разобраться с кодом который кто-то написал до меня. Замечу что хотя у меня используется DevExpress, скорее всего поднимаемый вопрос – общий для всех случаев, когда используются partial postbacks.
2. Итак, на форме (.ascx-файл, то есть файл User Control-а) есть Кнопка (класс ASPxButton из DevExpress): <dx:ASPxButton ID="btnPrintCompanies" runat="server" AutoPostBack="false" ClientSideEvents-Click="function(s,e) {callbackPrint.PerformCallback();}" > </dx:ASPxButton> Упомянутый объект 'callbackPrint' помещен на этой же странице вот так: <dx:ASPxPopupControl ID="PopupCompaniesPrint" ClientInstanceName="popupCompaniesP rint" runat="server" > <ContentCollection> <dx:PopupControlContentControl> <dx:ASPxCallbackPanel ID="CompaniesPrint" runat="server" ClientInstanceName="callbackPrint" OnCallback="CallbackPrint_Callback"> ..... А уже сам обработчик CallbackPrint_Callback выглядит (в .cs-файле) так: protected void CallbackPrint_Callback(object sender, CallbackEventArgsBase e) { ... } 3. Как я понимаю, такой способ вызова называется 'partial postback', верно? Он позволяет обновлять страницу НЕ перерисовывая её всю. При этом в Page_Load страницы я увижу IsPostBack==true; но это не 'полный' PostBack, а partial, так? 4. Как я понимаю, одним из побочных эффектов использования такого 'partial postback' будет то что в моём обработчике CallbackPrint_Callback я не смогу пользоваться механизмами page State Management (ViewState, ControlState). Когда я, находясь в этом обработчике, добавляю нечто в ViewState, в следующий раз я этого во ViewState не нахожу (хотя ViewState разрешён - как на уровне этого User Control-а так и на уровне его страницы). То же происходит и с ControlState. При нажатии на мою Кнопку метод LoadControlState вызывается, а вот метод SaveControlState – нет. Вопрос: я прав в причине того, почему page State Management не работает? 5. Раз он не работает, возникает вопрос: что можно использовать вместо него? Мне необходима какая-то замена: программе нужно, когда первый раз нажимают на Кнопку, создать некий программный объект, связанный с именно этим экземпляром страницы. Сам объект я могу сохранить как Session[MyUniqueKey]. Однако эту самую строку MyUniqueKey мне надо прихранить на самой странице, чтобы он был доступен когда Кнопку нажмут второй раз. Я рассчитывал это сделать через ViewState, но вижу что он не работает. Что можно использовать взамен? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаленный SQL-сервер Ado.Net + .Net remoting + Asp .Net | gammaray | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 2 | 22.11.2010 17:36 |
Вопрос к тем, кто имеет представление о PHP, JSP, ASP, ASP.NET | child_of_july | Помощь студентам | 0 | 07.06.2008 00:25 |