2012-06-17 4 views
0

세션 객체를 사용하여 사용자 작업을 기반으로 성공/오류 메시지를 저장하고 있습니다.MasterPage Page_Load가 Grid_ItemCommand 앞에 나타납니다.

각 포스트 백에서 메시지는 ItemCommend에 설정되고 마스터 페이지의 Page_Load에서 검색됩니다. 일단 검색되면 메시지가 세션에서 삭제됩니다.

문제는 ItemCommand가 호출되기 전에 마스터 페이지의 Page_Load가 호출되어 다음 새로 고침 또는 다시 게시 때까지 메시지가 표시되지 않는다는 것입니다.

이 상황은 일반적으로 어떻게 처리됩니까? 우리가 코딩 할 수있는 다른 이벤트가 있습니까?

답변

2

에 표시하십시오. 이것은 aspx 및 마스터 페이지의 정상적인 동작입니다. 먼저 마스터 페이지의 페이지로드가 해고 된 다음 다른 모든 클릭 등이 발생하면 콘텐츠 페이지의 페이지로드가 시작됩니다.

PageLoad 완료 이벤트를 사용하여 문제를 해결할 수 있습니다. 뒤에 코드 지금

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

: 사용의 코드 라인 다음 콘텐츠 페이지의 영문 파일에서

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

:

+0

감사합니다. 메시지를 표시하기 위해 MasterPage를 사용하기 때문에 그 이벤트가 없습니다. 페이지 클래스 만 않습니다. 그래서'this.Page.LoadComplete + = new System.EventHandler (Page_LoadComplete);를 추가하려고 시도했다.''this'는 MasterPage이다. 이제 문제는 이벤트 핸들러가 모든 Page_LoadComplete 이벤트의 추가 사본을 계속 연결하는 것입니다. –

+0

빠른 해결 방법은'this.Page.LoadComplete - = new System.EventHandler (Page_LoadComplete);를 사용하고'this.Page.LoadComplete + = new System.EventHandler (Page_LoadComplete);를 사용하는 것입니다. 더 좋은 방법이 있습니까? 마스터 페이지의 코드 뒤에 ASPX로 이벤트를 선언하는 방법이 있습니까? –

+0

그런 다음 마스터 페이지의 PreRender 이벤트를 사용해보십시오. 나는 그것이 당신을 위해 일해야한다고 생각합니다. 마스터 페이지에 대해 미리 정의 된 이벤트입니다. 콘텐츠 페이지로드 및 콘텐츠 페이지 프리 렌더 후에 발생합니다. –

1

이것은 정상적인입니다. 메시지를 itemcommand 또는 Page_prerender

0

뒤에이 같은 마스터 페이지의 코드의 공개 방법을 만들기 콘텐츠 페이지에서 어떤 컨트롤의 Item 이벤트에서도 Master Page의 메서드를 쉽게 호출 할 수 있습니다. 마스터 페이지의 메소드에서 필요한 코드를 작성하여 값을 업데이트하고 표시 할 수 있습니다.

이 같은 콘텐츠 페이지에 전화 마스터 페이지의 방법 :

this.Master.Set_Value(Session["abc"].ToString()); 
관련 문제