ASP.NET 페이지 전송을 실현하는 몇 가지 방법 소결

6403 단어
세 가지 방법은 QueryString, Session, Server입니다.Transfer.
URL 링크 주소를 통해 send.aspx: 
 
  
  protected void Button1_Click(object sender, EventArgs e)
    {
        Request.Redirect("Default2.aspx?username=honge");
    }

receive.aspx:
 
  
string username = Request.QueryString["username"];// 。

두 번째 방법:
포스터를 통해서.  send.aspx
receive.aspx
 
  
string username = Ruquest.Form["receive"];

세 번째 방법:session send.aspx:
 
  
  protected void Button1_Click(object sender, EventArgs e)
    {
        Session["username"] = "honge";
        Request.Redirect("Default2.aspx");
    }

receive.aspx:
 
  
string username = Session["username"];// 。

네 번째 방법:
Application send를 통해aspx:
 
  
  protected void Button1_Click(object 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(object sender, EventArgs e)
    {
        Server.Transfer("Default2.aspx");
    }

receive.aspx:
 
  
  send d = Context.Handler as send ;
        if (d != null)
        {
            Response.Write(d.Name); 。
 }

하면, 만약, 만약...net 2.0에서 사용 가능: PreviousPage
 
  
    PreviousPage d = Context.Handler as PreviousPage ;
    if (d != null)
    { Response.Write(d.Name);// 。
    }

이렇게 쓸 수도 있다:send.aspx:
receive.aspx:
string name = PreviousPage.Name;이렇게 하면 매개 변수의 값을 얻을 수 있다.
만약 페이지에 MasterPage가 사용된다면 Server.Transfer가 전달한 Previous Page는 무효입니다. 무슨 이유인지 모르겠습니다.MasterPage를 사용하려면 Session이나 Context를 사용하는 것이 좋습니다.Items[username]에서 수행합니다.QueryString을 사용하여QuerySting을 사용하여 페이지 간에 값을 전달하는 것은 이미 오래된 메커니즘이다. 이런 방법의 주요 장점은 실현하기가 매우 간단하다는 것이다. 그러나 전달하는 값이 브라우저의 주소 표시줄에 나타나는 (안전하지 않음)이고 대상을 전달할 수 없지만 전달하는 값이 적고 안전성이 높지 않은 상황에서이 방법은 그래도 괜찮은 방안이다.이런 방법을 사용하는 절차는 다음과 같다.◆컨트롤로 웹 폼(form)을 만들라=폼을 되돌릴 수 있는 단추와 링크 단추를 만들라=단추나 링크 단추를 눌렀을 때 URL을 저장할 문자 변수를 만들라=저장된 URL에 Query String 파라미터를 추가하라=Response를 사용한다.Redirect에서 위에 저장된 URL 아래의 코드 세그먼트로 리디렉션하는 방법은 다음과 같습니다. 소스 페이지 코드:
 
  
private void Button1_Click

(object sender, System.EventArgs e)
{
string url;
url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
Response.Redirect(url);
}


대상 페이지 코드
 
  
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}

세션 변수 사용
Session 변수를 사용하는 것은 페이지 간에 값을 전달할 수 있는 또 다른 방식이다. 이 예에서 우리는 컨트롤의 값을 Session 변수에 저장한 다음에 다른 페이지에서 그것을 사용하여 서로 다른 페이지 간에 값을 전달하는 목적을 실현한다.그러나 주의해야 할 것은 세션 변수에 너무 많은 데이터를 저장하면 비교적 많은 서버 자원을 소모할 수 있기 때문에session을 사용할 때 신중해야 한다. 물론 우리는 청소 동작을 사용하여 필요하지 않은session을 제거하고 자원의 무의미한 소모를 줄여야 한다.Session 변수를 사용하여 값을 전달하는 일반적인 단계는 다음과 같습니다.
◆ 페이지에 필요한 컨트롤 추가
◆폼으로 되돌아갈 수 있는 버튼과 링크 버튼 만들기
◆버튼이나 링크 버튼 클릭 이벤트에서session 변수에 컨트롤 값 추가
◆Response를 사용하라.Redirect 메서드를 다른 페이지로 리디렉션
◆ 다른 페이지에서session의 값을 추출하고 이session을 사용할 필요가 없는지 확인할 때 명시적으로 제거한다
다음 코드 단편은 이 방법을 어떻게 실현하는지 보여 준다.
소스 페이지 코드:

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

대상 페이지 코드:
 
  
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}

Server를 사용합니다.Transfer 이 방법은 위에서 소개한 방법보다 조금 복잡하지만 페이지 간 값 전달에 특히 유용하다. 이 방법을 사용하면 다른 페이지에서 대상 속성으로 드러난 값을 저장할 수 있다. 물론 이런 방법을 사용하면 다른 페이지에서 접근할 수 있도록 액외에 코드를 써서 속성을 만들어야 한다. 그러나,이 방식이 가져온 이점도 명백히 알 수 있다.전체적으로 말하자면 이런 방법을 사용하는 것은 간결하면서도 대상을 향한 것이다.이 방법을 사용하는 전체 절차는 다음과 같습니다.
◆ 페이지에 필요한 컨트롤 추가
◆반환값을 만드는 Get 속성 프로세스
◆폼으로 되돌아갈 수 있는 버튼과 링크 버튼 만들기
◆ 이벤트 프로세서에서 Server를 호출하려면 단추를 누르십시오.Transfer 메서드를 지정된 페이지로 이동
◆ 두 번째 페이지에서 우리는 Context를 사용할 수 있다.Handler 속성은 이전 페이지의 실례 대상에 대한 인용을 얻을 수 있으며, 이를 통해 이전 페이지의 컨트롤 값을 액세스할 수 있습니다
다음 코드는 위의 단계 프로세스를 구현하는 코드를 종합합니다.
소스 페이지 코드:
다음 코드를 페이지에 추가하십시오
 
  
public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}

그런 다음 Server를 호출합니다.Transfer 메서드
 
  
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
}

대상 페이지 코드:
 
  
private void Page_Load
(object sender, System.EventArgs e)
{
[url=file://create]file://create[/url] instance of source web form
WebForm1 wf1;
[url=file://get]file://get[/url] reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}

좋은 웹페이지 즐겨찾기