2010-03-18 11 views
2

내가 기본값을 가지고 있어야 텍스트 상자를 가지고 말할 수 있습니다 .... 그것은과 같이 초기화 기능에 : 지금몇 가지 질문

void InitializeControls() 
{ 
    myTextBox.Text = "Default Text"; 
} 

, 그 내가 말할 수 있습니다 다시 게시를 수행하는 버튼이 ... 버튼의 OnClick 이벤트 어딘가에서 텍스트 상자의 사용자가 입력 한 값을 저장하고 싶습니다.

제 질문은 위의 초기화 제어 코드를 언제 호출해야합니까?

protected override void OnLoad(EventArgs eventArgs) 
{ 
    base.OnLoad(eventArgs); 

    InitializeControls(); 
} 

가 포스트 백 데이터가 나는의 OnLoad에 초기화 코드가있는 경우 위 내 기본 텍스트를 덮어 쓸 것인가 : 나는 다시 게시 데이터마다 덮어 쓰기됩니다 그러나이 그렇게 보인다는 온로드 기능에 있어야합니다 생각하고 있어요 ? 당신이를 Page_Load에서 InitializeControl()를 호출하여 수동으로 텍스트를 설정하면

감사

답변

2

전화 InitializeControls()합니다. 이 방법으로 기본값은 ViewState의 일부가 아니므로 클라이언트에 전달하지 않고 이유없이 반환합니다. 또한 마크 업 (.aspx 파일)의 기본값을 설정할 수도 있습니다. 이 아무 이유의 ViewState를 팽만감,의 ViewState에 기본 값을 추가하기 때문에

는 PageLoad /의 OnLoad에서 하지 전화 InitializeControls()를 수행.

이 내용을 잘 이해하려면 TRULY understanding ViewState 문서를 읽어보십시오.

4

텍스트 상자의 사용자가 입력 한 값은 다시 게시하는 동안 손실됩니다. durilai의 코멘트 당

alt text http://i.msdn.microsoft.com/ms972976.viewstate_fig02%28en-us,MSDN.10%29.gif

, 당신은 일하고자하는 !IsPostBack 경우 블록 코드 내의 장소 처음으로 페이지가로드 전용 :

if (!IsPostBack) { 
    InitializeControls(); 
} 
+0

postbacK가 아닌 경우 기본값을 설정해야합니다. 동적 컨트롤은 어떨까요? – Polaris878

+0

if (! ispostback) –

+1

Page_Load에 값을 설정하면 아무런 이유없이 ViewState에서 추적하게되므로 불필요하게 ViewState가 확대됩니다. 기본 값은 Base.OnInit (base.OnInit() 호출 후 ViewState가 변경 내용 추적을 시작한 후에 OnInit에 설정해야 함) – Rune

2

난 당신을 생각은 아마 찾고있다 코드의 경우

if (!Page.IsPostBack) 

첫 번째로드에서만 발생해야하는 문제를 처리 할 수 ​​있습니다.

+0

언제 다시 포스트 백 값이 실제로로드됩니까? 컨트롤이 동적 인 경우는 어떻습니까?난 그냥하는 OnInit 또는 무언가에이 함수를 호출 할 수 있고 다시 게시 값을 그냥 기본값을 덮어 쓸 것인지 알고 싶습니다 때문에 – Polaris878

+0

나는 이상적이다 ... 부탁 해요 – Polaris878

+0

Dynaically 컨트롤 어디에서에 따라 다를 수 있습니다 추가 컨트롤 계층 구조에 추가 한 페이지 수명주기 ... – Paddy

0

마크 업의 텍스트 상자에 기본값을 설정하기 만하면 코드의 기본값을 설정하고 포스트 백을 확인하는 것에 대해 걱정할 필요가 없습니다. 그렇지 않으면 Page_Load와 OnLoad가 모두 기본값을 설정하는 적절한 위치입니다. 당신은 페이지를 다시 게시 한 경우 검사 할 것입니다, 만약 그렇다면, 사용자의 값을 덮어 쓰지 않습니다 base.OnInit()에 대한 호출하기 전에 OnInit에서

if (!IsPostBack) 
    InitializeControls();