2008-10-03 5 views

Répondre

1

Afficher l'état est exclusif à la page.

Si vous voulez transférer des articles,

  • vous pouvez persister les données dans une base de données, fichiers, ticket d'auth ou un autre cookie (Ne pas utiliser de session ou HttpContext.Current.Cache si vous pouvez l'aider)
  • faire un poste de Croix - de votre première page, republier à la deuxième page (et obtenir les détails de HttpContext.Current.Request.Form [] collection)
  • mettre les valeurs dans une chaîne de requête
+0

I a fini par utiliser un article inter-pages, mais en accédant à une propriété publique sur la première page (voir ci-dessous). –

1

Utilisez plutôt HttpContext.Current.Items ... ViewState est seulement bon pour la page sur laquelle il est.

+0

Cette m ethod est simple et propre. J'aime ça. –

+0

J'ai essayé d'utiliser cette méthode, mais je poste directement à partir d'un lien sur la première page. Aucun code n'est en cours d'exécution où je peux remplir la collection HttpContext.Current.Items:

0

Vous ne pouvez pas directement. (Voir http://msdn2.microsoft.com/en-us/library/ms178139(vs.80).aspx

Voici ce que vous pouvez faire -.

Créer des propriétés publiques sur la première page d'exposer les informations que vous souhaitez partager sur la deuxième page, définissez la PreviousPageType à la première page dans l'en-tête du fichier ASPX :

<%@ previouspagetype virtualpath="~/firstpage.aspx" %> 

Ensuite, obtenir les valeurs de ces propriétés en cas de charge de la deuxième page:

If (Not MyBase.IsPostBack) Then 

    _someValue = Me.PreviousPage.SomeValue 

End If 
+0

Utilisez la directive @ PreviousPageType pour obtenir un typage fort par rapport à la propriété PreviousPage. "_someValue = firstPage.SomeValue" devient "_someValue = Me.PreviousPage.SomeValue" –

+0

Réponse modifiée pour utiliser PreviousPageType –

1

Vous pouvez éviter usi ng directive PreviousPageType, en utilisant une classe de page de base pouvant contenir votre objet. Par exemple, vous avez la classe

public class BaseCrossPage:System.Web.UI.Page 
{ 
    public List<Guid> Invitees = new List<Guid>(); 

} 

Donc, si la première page dérivent de cette classe

public partial class Default : BaseCrossPage 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     this.Invitees = LoadInvitees(); 
    } 


} 

Ensuite, la page que vous avez posté à peut accéder à cet objet, en supposant que la page précédente dérivée de BaseCrossPage .. .

public partial class secondPage : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     BaseCrossPage p = (BaseCrossPage)PreviousPage; 
     List<Guid> Invitees = p.InvitedTeams 
    } 
} 

genre de "VIEWSTATE" entre les pages ...

Questions connexes