ASP.Net 페이지 간 변수 값 전달 방법

첫 번 째 방법:URL 링크 주소 로 전달
send.aspx: 

protected void Button1_Click( sender, EventArgs e)
 {
 Request.Redirect("Default2.aspx?username=honge");
 }

receive.aspx:

string username = Request.QueryString["username"];

두 번 째 방법:post 방식 으로
receive.aspx:

string username = Ruquest.Form["receive"];
세 번 째 방법:session 방식 을 통 해
send.aspx:

protected void Button1_Click( sender, EventArgs e)
 {
 Session["username"] = "honge";
 Request.Redirect("Default2.aspx");
 }
receive.aspx:

string username = Session["username"];
네 번 째 방법:애플 리 케 이 션 방식 을 통 해
send.aspx:

protected void Button1_Click( sender, EventArgs e)
 {  
 Application["username"] = "honge";    
 Request.Redirect("Default2.aspx");
 }

receive.aspx:

string username = Application["username"];
다섯 번 째 방법:Server.Transfer 방식 을 통 해
send.aspx: 

public string Name 
 {    
 get
 {   
 return "honge";   
 } 
 }  
 protected void Button1_Click( sender, EventArgs e)  
 {    
 Server.Transfer("Default2.aspx");  
 }
receive.aspx: 

send d = Context.Handler as send ;    
 if (d != null)    
 {     
 Response.Write(d.Name);    
 }
asp.net 2.0 에서 도 이렇게 사용 할 수 있다 면:Previous Page 방식 을 통 해

PreviousPage d = Context.Handler as PreviousPage ;
 if (d != null)
 {
 Response.Write(d.Name);
 }
이렇게 사용 할 수도 있다.

send.aspx:receive.aspx:string name = PreviousPage.Name;
만약 당신 의 페이지 에 Master Page 를 사용 했다 면,Server.Transfer 가 전달 한 Previous Page 는 무효 입 니 다.이것 이 무슨 원인 인지 모 르 겠 습 니 다.그래서 Master Page 를 사용 하면 Session 이나 Context.Items[username]로 이 루어 지 는 것 이 좋 습 니 다.
QueryString 사용 하기
Query Sting 을 사용 하여 페이지 간 에 전달 하 는 값 은 이미 오래된 메커니즘 입 니 다.이런 방법의 주요 장점 은 실현 이 매우 간단 하 다 는 것 입 니 다.그러나 전달 하 는 값 은 브 라 우 저의 주소 표시 줄 에 표시 되 는(안전 하지 않 음)이 고 대상 을 전달 할 수 없 지만 전달 하 는 값 이 적 고 안전성 에 대한 요구 가 높 지 않 은 상황 에서이 방법 은 그래도 괜 찮 은 방안 이다.이런 방법 을 사용 하 는 절 차 는 다음 과 같다.
1.컨트롤 로 웹 폼 만 들 기(form)
2.폼 을 되 돌 릴 수 있 는 단추 와 링크 단 추 를 만 듭 니 다.
3.버튼 이나 링크 단 추 를 누 른 이벤트 에 URL 을 저장 하 는 문자 변 수 를 만 듭 니 다.
4.저 장 된 URL 에 QueryString 인 자 를 추가 합 니 다.
5.Response.Redirect 를 사용 하여 위 에 저 장 된 URL 로 변경
다음 코드 세 션 은 이 방법 을 어떻게 실현 하 는 지 보 여 줍 니 다.
원본 페이지 코드:

private void Button1_Click( sender, System.EventArgs e) 
 {
 string url;
 url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; 
 Response.Redirect(url);
 }
대상 페이지 코드:

private void Page_Load( sender, System.EventArgs e)
 {
 Label1.Text=Request.QueryString["name"];
 Label2.Text=Request.QueryString["email"];
 }
세 션 변수 사용
세 션 변 수 를 사용 하 는 것 은 페이지 간 에 값 을 전달 할 수 있 는 다른 방식 입 니 다.이 예 에서 우 리 는 컨트롤 의 값 을 세 션 변수 에 존재 한 다음 다른 페이지 에서 사용 하여 서로 다른 페이지 간 에 값 을 전달 하 는 목적 을 실현 합 니 다.그러나 주의해 야 할 것 은 Session 변수 에 너무 많은 데 이 터 를 저장 하면 서버 자원 을 많이 소모 할 수 있 으 므 로 session 을 사용 할 때 신중 해 야 합 니 다.물론 필요 하지 않 은 session 을 제거 하여 자원 의 불필요 한 소 모 를 줄 여야 합 니 다.Session 변수 전달 값 을 사용 하 는 일반적인 절 차 는 다음 과 같 습 니 다.
1.페이지 에 필요 한 컨트롤 추가
2.폼 을 되 돌 릴 수 있 는 단추 와 링크 단 추 를 만 듭 니 다.
3.버튼 이나 링크 단 추 를 누 른 이벤트 에서 컨트롤 의 값 을 session 변수 에 추가 합 니 다.
4.Response.Redirect 방법 으로 다른 페이지 로 재 설정
5.다른 페이지 에서 session 의 값 을 추출 합 니 다.이 session 을 사용 하지 않 아 도 되 는 지 확인 할 때 명시 적 으로 제거 해 야 합 니 다.
다음 코드 세 션 은 이 방법 을 어떻게 실현 하 는 지 보 여 줍 니 다.
원본 페이지 코드:

private void Button1_Click( sender, System.EventArgs e) 
 {
 file://textbox1 and textbox2 are webform
 file://controls
 Session["name"]=TextBox1.Text;
 Session["email"]=TextBox2.Text;
 Server.Transfer("anotherwebform.aspx");
 }
대상 페이지 코드:

private void Page_Load( sender, System.EventArgs e)  
 {
 Label1.Text=Session["name"].ToString();
 Label2.Text=Session["email"].ToString();
 Session.Remove("name");
 Session.Remove("email");
 }

Server.Transfer 사용 하기
이 방법 은 위 에서 소개 한 방법 에 비해 약간 복잡 하지만 페이지 간 값 전달 에 있어 서 특히 유용 합 니 다.이 방법 을 사용 하면 다른 페이지 에서 대상 속성 으로 표 시 된 값 을 액세스 할 수 있 습 니 다.물론 이 방법 을 사용 하려 면 다른 페이지 에서 접근 할 수 있 도록 코드 를 추가 로 써 야 합 니 다.단,이 방식 이 가 져 온 장점 도 분명 하 다.전체적으로 이런 방법 을 사용 하 는 것 은 간결 하면 서도 대상 을 대상 으로 하 는 것 이다.이런 방법 을 사용 하 는 전체 과정 은 다음 과 같다.
1.페이지 에 필요 한 컨트롤 추가
2、반환 값 을 만 드 는 Get 속성 과정
3.폼 을 되 돌 릴 수 있 는 단추 와 링크 단 추 를 만 듭 니 다.
4.단 추 를 누 르 면 이벤트 처리 프로그램 에서 Server.Transfer 방법 을 지정 한 페이지 로 이동 합 니 다.
5.두 번 째 페이지 에서 우 리 는 Context.Handler 속성 을 사용 하여 이전 페이지 의 인 스 턴 스 대상 에 대한 인용 을 얻 을 수 있 습 니 다.이 를 통 해 액세스 전 을 사용 할 수 있 습 니 다.
한 페이지 의 컨트롤 값 입 니 다.
다음 코드 는 상기 절차 과정 을 종합 적 으로 실현 하 는 코드 입 니 다.
원본 페이지 코드:
다음 코드 를 페이지 에 추가 합 니 다.

public string Name
 {
 get
 {
 return TextBox1.Text;
 }
 }
 public string EMail
 {  
 get
 {
 return TextBox2.Text;
 }
 }
그리고 Server.Transfer 방법 을 호출 합 니 다.

private void Button1_Click( sender, System.EventArgs e) 
 {
 Server.Transfer("anotherwebform.aspx");
 }
대상 페이지 코드:

private void Page_Load( sender, System.EventArgs e) 
 {file://create instance of source web form
 WebForm1 wf1;
 file://get reference to current handler instance
 wf1=(WebForm1)Context.Handler;
 Label1.Text=wf1.Name;
 Label2.Text=wf1.EMail;
 }

좋은 웹페이지 즐겨찾기