2010-03-15 5 views

Répondre

10

Vous ne pouvez pas accéder directement à ViewState d'une page d'une autre page.

Si vous souhaitez accéder à une valeur ViewState particulière, vous pouvez passer la valeur dans Collection de contextes, puis accéder à la valeur dans une autre page.

Dans la page 1

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

Dans la page 2

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

en fait, vous pouvez. Là nous quelque chose appelé Cross page postng où vous pouvez accéder à viewstate. http://www.codeproject.com/Tips/604553/Postback-and-Cross-Page-Posting-in-ASP-NET –

4

Presque tous entretien ASP.NET cette question sera posée. La réponse à cette question n'est pas directement mais nous pouvons accéder à travers la classe statebag. Mais l'appel de la deuxième page doit être par Server.Transfer

FirstPage.aspx

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

    } 
    public StateBag ReturnViewState() 
    { 
     return ViewState; 
    } 

// Deuxième page
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

Cela travaillera également

FirstPage.aspx (dans le code derrière)

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 (en code derrière)

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 classe

public class CompanyInfo 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 
Questions connexes