2009-03-24 2 views
0

일반적으로 Page_Load에 삽입해야하는 사용자 정의 컨트롤에 코드가 있지만 (예 : DropDowns와 같은 다른 구성 요소를 초기화합니다),이 코드는 Page_Load 전에 발생해야합니다. 이 컨트롤을 호스팅하는 페이지ASP.NET : 상위 페이지의 Page_Load 전에 실행

protected void Page_Init(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    Methods.PopulateWhatList(cboWhatList0, cboWhatList1, fldWhat, Request["WhatId"], true); 
    Methods.PopulateWhereList(cboWhereList0, cboWhereList1, fldWhere, Request["WhereId"], true); 
    Methods.PopulateWhoList(cboWho, true, Request["WhoId"]); 
    Methods.PopulateWhenList(cboWhen, true, Request["WhenId"]); 
    Methods.PopulatePriceRangeList(cboPriceRange, true, Request["PriceRangeId"]);  
    } 
} 

을 ...하지만 몇 가지 문제를 경험 한 :

난 후 Page_Init에 넣고하려고 노력했다. 그렇다면이 코드 유형에 가장 적합한 곳은 어디입니까?

protected override void Render(HtmlTextWriter writer) 
{ 
    Methods.EnableValidationWhereList(cboWhereList1, this.Page); 
    Methods.EnableValidationWhatList(cboWhatList1, this.Page); 
    base.Render(writer); 
} 

이 특정 포스트 백에 호출되지 않습니다 :

나는 데 (관련없는 수 있습니다) 문제는 나의입니까? (LinkButton을 누를 때)

+0

전체 포스트 스크립트에서 전체 렌더링 메서드가 호출되지 않았거나 유효성 검증 루틴이 EnableValidation__List 메서드에 추가되었다고 말하는 것입니까? –

+0

또한 각 방법마다 다른 드롭 다운으로 작업하고 있습니다. 맞습니까? 컨트롤 라이프 사이클의 다른 곳에서 cbo__List1의 내용을 설정하고 있다고 생각하십니까? EnableValidation__List가 실제로 무엇을하고 있습니까? –

답변

2

나는 당신이 뭘하려는 건지에 대한 추측을 시도하고 솔루션을 제안 할 것이다 : 당신의 Page_Init 당신이 페이지에 다양한 컨트롤의 내용을 채우는 것에

합니다. URL 매개 변수에 따라 달라 지므로 if(!IsPostBack) 절입니다.

Page_Init 이후에는 일부 컨트롤이 사용 중지 된 상태로 유지되므로 렌더링 메서드에서 사용하도록 설정해야합니다.

LinkButton에서 포스트 백을 수행하면 다음 페이지 렌더링시 드롭 다운이 표시되지 않습니다.

사용하지 않는 컨트롤이 ViewState에 유지되지 않습니다. SaveViewState가 Render 전에 호출되기 때문에 페이지 수명주기에서 너무 늦게 컨트롤을 사용할 수 있습니다.

페이지에서 Methods.EnableValidation... 호출을 Pre_Render 메서드로 이동하면 컨트롤 상태가 ViewState에 유지됩니다.

수정 한 후에는 Page_Init 메서드의 코드를 해당 코드가 속한 Page_Load 메서드로 옮겨야합니다. 그렇게하면 포스트 백 상태에서 컨트롤 데이터가 ViewState에서로드됩니다.

0

페이지 수명주기는 페이지의 page_load가 컨트롤의 page_load보다 먼저 실행되는 것과 같습니다.

페이지로드 전에 데이터 소스를 초기화해야하는 경우 base.OnInit()가 먼저 호출되었는지 확인한 다음 OnInit에 초기화 할 수 있습니다. 이상적으로는 viewstate에 문제가 없는지 확인하기 위해 page_load 메커니즘에 대한 데이터 바인딩 호출을 유지해야합니다.

렌더링 방법에 관해서. '인 에이블 (enable)'방법은 전체 페이지 라이프 사이클에서 어떤 목적을 제공합니까?

관련 문제