2010-03-15 3 views

답변

10

다른 페이지에서 한 페이지의 ViewState에 직접 액세스 할 수 없습니다.

특정 ViewState 값에 액세스하려는 경우 컨텍스트 컬렉션에 값을 전달한 다음 다른 페이지의 값에 액세스 할 수 있습니다.

string myValue = Context.Items["variable"].ToString(); 
+0

실제로 당신이 할 수 있습니다. 거기에 우리가 viewstate에 액세스 할 수있는 크로스 페이지 postng으로 불리는 뭔가. http://www.codeproject.com/Tips/604553/Postback-and-Cross-Page-Posting-in-ASP-NET –

4

2 페이지에서 1 페이지

Context.Items.Add ("variable" , ViewState["yourvalue"].ToString()); 

에서

은 거의 모든 ASP.NET의 인터뷰에서이 질문을 묻는 메시지가 표시됩니다. 이 질문에 대한 답변은 직접은 아니지만 statebag 클래스를 통해 액세스 할 수 있습니다. 그러나 두 번째 페이지를 호출하면

protected void Page_Load(object sender, EventArgs e) 
    { 
     ViewState["Name"] = "Kamaraj"; 
     Server.Transfer("SecondPage.aspx"); 

    } 
    public StateBag ReturnViewState() 
    { 
     return ViewState; 
    } 

// 두 번째 페이지가
Secondpage.aspx

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (PreviousPage != null && PreviousPageViewState != null) 
     { 
      lblMag.Text = PreviousPageViewState["Name"].ToString(); 
     } 
    } 

    private StateBag PreviousPageViewState 
    { 
     get 
     { 
      StateBag returnValue = null; 
      if (PreviousPage != null) 
      { 
       Object objPreviousPage = (Object)PreviousPage; 
       MethodInfo objMethod = objPreviousPage.GetType().GetMethod("ReturnViewState");//System.Reflection class 
       return (StateBag)objMethod.Invoke(objPreviousPage, null); 
      } 
      return returnValue; 
     } 
    } 
0

이것은 또한 작동 Server.Transfer를 통해

FirstPage.aspx해야

FirstPage.aspx (코드 숨김)

(뒤에 코드에서)
public void btnTransfer_Click(object sender, EventArgs e) 
{ 
    CompanyInfo comInfo = new CompanyInfo() { ID = 223, Name = "TCS" }; 
    ViewState["ViewStateCompany"] = comInfo;  
    Server.Transfer("SecondPage.aspx"); 
} 

public CompanyInfo GetViewValue() 
{ 
    CompanyInfo comInfo = (CompanyInfo)ViewState["ViewStateCompany"]; 
    return comInfo; 
} 

SecondPage.aspx

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.PreviousPage != null) 
    { 

     Type ty = Page.PreviousPage.GetType(); 
     MethodInfo mi = ty.GetMethod("GetViewValue"); 
     CompanyInfo comInfo = (CompanyInfo)mi.Invoke(Page.PreviousPage, null); 

    } 
} 

CompanyInfo 클래스

public class CompanyInfo 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 
관련 문제