ASP.NET에서 페이지가로드 될 때 처리 할 단계 값을 어떻게 증분합니까?

StackOverflow https://stackoverflow.com/questions/418596

  •  03-07-2019
  •  | 
  •  

문제

페이지가로드 될 때 처리 할 단계 값을 어떻게 증분합니까? 예를 들어, 아래 코드에서 viewstate 변수는 ASP.NET 페이지 수명주기로 인해 Page_Load 이후까지 증가하지 않습니다.

protected void Page_Load(object sender, EventArgs e)
{
    switch ((int)ViewState["step"])
    {
        //do something different for each step
    }
}

protected void btnIncrementStep_Click(object sender, EventArgs e)
{
    //when the button is clicked, this does not fire 
    //until after page_load finishes
    ViewState["step"] = (int)ViewState["step"] + 1;
}
도움이 되었습니까?

해결책

스위치 문을 나중에 발생하는 이벤트로 옮기십시오. 예를 들어 LoadComplete () 또는 Prerender (). Prerender는 아마도 당신이하고 싶은 일에 따라 조금 늦었을 것입니다.

다른 팁

이것에 대한 방법이 없습니다. Page_load 이벤트는 항상 제어 이벤트가 발사되기 전에 발생합니다. 제어 이벤트 후 무언가를 해야하는 경우 Page_Prerender를 사용하십시오.

ASP.NET 페이지 라이프 사이클 이미지

Increment during the loadcomplete 이벤트 또는 onload 중에도.

양식 데이터에서 증가할지 여부를 결정하는 데 필요한 모든 정보가 있습니다. onclick () 이벤트를 기다릴 필요가 없습니다. 양식을 확인하여 항목을 클릭 할 것인지 확인하십시오.

request.params ( "__ eventargs")를 봐

이것은 포스트 백을 일으킨 컨트롤을 식별합니다.

page_load 동안 값을 증가시키고 확인 해야하는 경우 옵션은 viewstate 대신 세션에 값을 저장하는 것입니다.

private int Step
{
  get { return (int)Session["step"]; }
  set { Session["step"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
       Step = 0; // init
    else
       Step ++; // increment

    switch (Step)
    {
        //do something different for each step
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top