2012-09-14 3 views
0

asp.net의 C#에서 web-project를 작성하고 있습니다. 한 페이지에서 다른 페이지로 이동할 때 객체의 인스턴스를 전달하려고합니다. 예를 들어웹 프로젝트에서 객체의 인스턴스를 보내십시오.

I 클래스를

public partial class A: System.Web.UI.Page{ 
    private Item item = new Item();//I have a class Item 

    protected void btn1_Click(Object sender,EventArgs e) 
    { 
     Response.Redirect("nextpage.aspx");//Here I want to send item object to the nextpage 
    } 
} 

이 내가 클래스 그래서

public partial class nextpage: System.Web.UI.Page{ 
    Item myItem; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     myItem = //item sent from page A 
    }  
} 

에게이를 통해 변수를 전달처럼, 한 페이지에서 다른 페이지로 개체의 인스턴스를 보낼 수있는 방법이있다 검색어 가져 오기? 나는 많은 하이퍼 링크를 가지고 있기 때문에

는 세션을 사용하지 않는 것이 좋습니다,이 때문에 내 알고리즘에 적합하지 않습니다 바랍니다 :

for (int i = 0; i < store1.items.Count(); i++) { 
    HyperLink h = new HyperLink(); 
    h.Text = store1.items[i].Name; 
    h.NavigateUrl = "item.aspx";//here I must send items[i] when clicking at this hyperlink 
    this.Form.Controls.Add(h); 
    this.Form.Controls.Add(new LiteralControl("<br/>")); 
} 

사용자가 하이퍼 링크에 클릭 할 때 그래서 그/그녀가 item.aspx로 리디렉션해야 또한 해당 페이지에 적절한 항목을 보냅니다.

+0

이것은 정확하게 세션이 의도하는 종류의 것입니다. 가장 분명한 답변을 기각하기 전에 세션이 적절하지 않은 이유를 정확히 설명하십시오. –

+0

하이퍼 링크가 있는데 그 양은 변경 가능합니다. 위의 내 질문을 업데이트 중입니다 ... – Nurlan

답변

-1

검색어 문자열 매개 변수를 nextpage.aspx으로 설정할 수 있습니다.

Response.Redirect("nextpage.aspx?MyItem=somevalue") 

public partial class nextpage: System.Web.UI.Page{ 
    Item myItem; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     string anIdForTheItem = Request.QueryString["MyItem"]; 

     myItem = myDatabase.Lookup(anIdForTheItem); 

     // You can also use Request.Params["MyItem"], but be aware that Params 
     // includes both GET parameters (on the query string) and POST paramaters. 
    }  
} 
+0

응답 전에 확인하셨습니까? myItem에서 컴파일러 오류가 발생합니다. = Request.QueryString [ "MyItem"]; 먼저 구문의 정확성을 확인하십시오. – Nurlan

+1

@NurlanKenzhebekov'item'이'Item' 유형이고 QueryString이 문자열 전달에만 유용하기 때문에 여러분이 얻고있는 오류가 있습니다. 컴파일 오류가 수정되었습니다 (아직 테스트하지는 않았지만 컴파일러가 아닙니다). 쿼리 문자열 (예 : 위의 예에서 설명한대로 데이터베이스 ID)을 조회 할 수도 있고, 세션을 사용할 수없는 경우 쿼리 문자열을 전달하기위한 문자열로 항목을 인코딩 할 수도 있습니다. 객체를 전달하고자한다면, 실제로는'Session'을 사용하는 것이 좋습니다 ... –

0

세션 변수를 사용하여 프로젝트의 다른 웹 페이지에서 개체를 보낼 수 있습니다.

public partial class A: System.Web.UI.Page{  
    private Item item = new Item();//I have a class Item 
    Session["myItem"]=myItem; 
    protected void btn1_Click(Object sender,EventArgs e) 
     {  Response.Redirect("nextpage.aspx"); 
     //Here I want to send item object to the nextpage 
     } 
} 

public partial class nextpage: System.Web.UI.Page{ 
    Item myItem; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     myItem =(Cast to It's Type) Session["myItem"]; 
    } 
} 
+0

위와 같이 쓰지 마십시오. 세션을 사용하지 않는 것이 좋습니다 – Nurlan

+1

죄송합니다. 귀하의 의견을 눈치 채지 못했습니다 ... 세션을 사용하지 않을 경우 내가 볼 수있는 유일한 방법은 값을 전달하는 "HttpContext.Current.Items"를 사용하는 것입니다. Server.Transfer를 사용하여 데이터를 한 번만 사용할 수 있습니다 ... Google에서 자세한 정보를 찾을 수 있습니다. –

0

ASP.Net 캐시를 사용해 보셨습니까?

+0

아니요, 아닙니다. 이게 뭐야? – Nurlan

관련 문제