2012-06-17 3 views
0

Я использую объект сеанса для хранения сообщений об ошибках/ошибках на основе действий пользователя.MasterPage Page_Load удаляет до Grid_ItemCommand

При каждом обратном вызове сообщение устанавливается в ItemCommend и извлекается на странице Page_Load главной страницы. После извлечения сообщение удаляется из сеанса.

Проблема заключается в том, что страница_страницы главной страницы вызывается до вызова ItemCommand, поэтому сообщение не отображается до следующего обновления или обратной передачи.

Как обычно обрабатывается эта ситуация? Есть ли какое-то другое событие, с которым мы можем бороться?

ответ

2

Это нормальное поведение aspx и мастер-страниц. Сначала загружается загрузка страницы страницы страницы, после чего запускается страница pageload главной страницы, а затем все остальные клики и т. Д.

Вы можете использовать событие PageLoad Complete, чтобы решить вашу проблему.

+0

Спасибо. Поскольку я использую MasterPage для отображения сообщения, у него нет этого события. Только класс страницы. Поэтому я попытался добавить 'this.Page.LoadComplete + = новый System.EventHandler (Page_LoadComplete);' где 'this' является MasterPage. Теперь проблема заключается в том, что обработчик событий продолжает прикреплять дополнительные экземпляры события Page_LoadComplete на каждом 'Page_Load'. –

+0

Быстрое обходное решение заключалось в том, чтобы использовать 'this.Page.LoadComplete - = new System.EventHandler (Page_LoadComplete);' follow_ this.Page.LoadComplete + = new System.EventHandler (Page_LoadComplete); '. Есть ли способ лучше? Есть ли способ объявить событие в ASPX, а не код за главной страницей? –

+0

, затем попытайтесь использовать событие PreRender главной страницы. Думаю, это сработает для вас. является предопределенным событием для главной страницы. и он запускается после загрузки страницы содержимого и страницы содержимого PreRender. –

1

это нормальное поведение. покажите свое сообщение на itemcommand или Page_prerender

0

Создание открытого метода в код вашей главной страницы, как это:

public void Set_Value(String SessionValue) 
    { 
     //your code here 
    } 

В ASPX Файл вашего содержимого страницы, используйте следующий код:

<%@ MasterType VirtualPath="~/MasterPage.master" %> 

Теперь в код вашей страницы содержимого. Вы можете легко вызвать метод главной страницы в событии Item вашего любого элемента управления. В методе вашей главной страницы вы можете написать свой необходимый код для обновления и отображения значений.

вызова метода мастер-страницы на странице контентной Как это:

this.Master.Set_Value(Session["abc"].ToString());