Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2011, 21:01   #1
Glen
Форумчанин
 
Аватар для Glen
 
Регистрация: 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, но вижу что он не работает.

Что можно использовать взамен?
Glen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаленный 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