ASP.NET에서 페이지가로드 될 때 처리 할 단계 값을 어떻게 증분합니까?
문제
페이지가로드 될 때 처리 할 단계 값을 어떻게 증분합니까? 예를 들어, 아래 코드에서 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를 사용하십시오.
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
}
}
제휴하지 않습니다 StackOverflow