반응형
asp.net을 하다 부딪히게 되는 가장 큰 장애중 하나로
뒤로가기가 제대로 안되는 문제가 있습니다.
"이거 asp나 jsp로 할 때는 아무 문제도 아니었는데 말야..
닷넷 정말 좋은 거 맞는거야? " 라고들 생각하셨겠죠..
물론 javascript로 history.back() 하는 것보다는 복잡하지만
생각보다는 쉽게 구현할 수 있습니다.
원리는 간단합니다.
PostBack의 카운트를 세어서 그만큼 뒤로가기를 시켜주는 것입니다.
Page_Load 이벤트에 다음과 같이 코딩해주시면 됩니다.
if (!IsPostBack)
{
ViewState["History"] = -1;
}
else
{
ViewState["History"] = Convert.ToInt32(ViewState["History"]) - 1;
}
btnList.Attributes["onclick"] = "history.go(" + ViewState["History"].ToString() + ");return false";
처음 그 페이지에 들어왔을 때에는 history.go(-1)을 해주면
뒤로 가니까 초기값을 -1로 주었습니다.
그리고 PostBack이 일어날 때마다 그 값을 하나씩 빼줍니다.
그 다음엔 돌아가야할 카운트를 되돌아가기 버튼에 할당해줍니다.
되돌아가기 이벤트를 서버 이벤트로 처리할 수도 있었지만
필요없는 네트웍 트래픽만 일으키게 되기 때문에
클라이언트쪽 이벤트로 처리해 보았습니다.
반응형