J'ai une valeur de chaîne de texte que je voudrais conserver d'une page Web à l'autre sans utiliser les chaînes de requête ou les états de session/vue. J'ai essayé d'obtenir le contrôle ASP http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hiddenfield.aspx">HiddenField pour passer des informations d'un formulaire Web à un autre forme.
Tous les exemples de contrôle HiddenField que je l'ai vu est de préserver les allers-retours du client vers le serveur pour la même forme.
y at-il moyen d'un formulaire pour accéder aux commandes ASP (et leur valeurs) à partir du formulaire précédemment rendu? Ou la forme initiale est-elle simplement disposée en mémoire au moment où la deuxième forme exécute sa méthode OnLoad?Si une page exécute un Response.Redirect() sur une autre page Web, la nouvelle page peut-elle accéder aux valeurs des contrôles asp.net depuis la page d'origine?
Répondre
Je suppose que le Response.Redirect() envoie un Loc ation: En-tête HTTP pour faire une redirection.
Comme HTTP est sans état, je suppose également que ces variables sont inaccessibles.
Il existe cependant des solutions.
- Imprimer un formulaire avec des champs cachés, et utiliser le javascript pour soumettre
- Redirect dans le code interne (charger la chose dont il a besoin pour obtenir manuellement)
- stocker les données dans une table de base de données temporaire quelque part, et transmettre un ID unique
Cependant, d'après mon expérience, je ne comprends pas pourquoi vous pourriez avoir besoin de faire cela (autre que de re-soumettre un formulaire après une authentification de l'utilisateur - qui, espérons-le, devrait être capable d'utiliser la méthode 2 pour
Rappelez-vous, une Response.Redirect demande au navigateur d'émettre une autre requête au serveur. En ce qui concerne le serveur, cette requête suivante est impossible à distinguer de toute autre demande entrante. Ce n'est certainement pas lié à un formulaire précédent. Pourriez-vous expliquer votre aversion au stockage dans la session, afin que nous puissions proposer des alternatives viables?
Si les deux pages vivent dans la même application que vous pouvez utiliser Server.Transfer:
firstpage.aspx:
protected void Page_Load(object sender, EventArgs e)
{
Server.Transfer("~/secondpage.aspx");
}
secondpage.aspx:
protected void Page_Load(object sender, EventArgs e)
{
Page previousPage = (Page) HttpContext.Current.PreviousHandler;
Label previousPageControl = (Label) previousPage.FindControl("theLabel");
label.Text =previousPageControl.Text;
}
Une solution un peu mieux serait implémenter une interface sur votre première page où vous exposer les propriétés pour les valeurs nécessaires à la deuxième page.
Vous ne pouvez pas obtenir les champs de la page précédente avec Response.Redirect. Vous pouvez avec cross page posting:
if (Page.PreviousPage != null)
{
TextBox SourceTextBox =
(TextBox)Page.PreviousPage.FindControl("TextBox1");
if (SourceTextBox != null)
{
Label1.Text = SourceTextBox.Text;
}
}
réponse est non. Comme d'autres l'ont noté, vous pouvez utiliser Server.Transfer et ensuite vous pouvez - cependant, ceci doit être utilisé avec précaution. C'est une "redirection côté serveur" par exemple.
Votre utilisateur est sur http://mysite.com/Page1.aspx ils cliquent sur un bouton et vous effectuez un Server.Transfer ("Page2.aspx"). Page2.aspx sera rendu dans leur navigateur, mais l'URL sera toujours Page1.aspx, cela peut causer de la confusion et gâcher la navigation avant/arrière.
Personnellement, je n'utiliserais Server.Transfer qu'en dernier recours - dans le monde du Web, le partage de données entre les pages signifie généralement que vous devez utiliser un mécanisme de stockage; Cookie, QueryString, Session, Base de données - faites votre choix.
- 1. Déterminer quels contrôles échouent sur une page Web ASP.NET
- 2. Accéder au contrôle d'une page à partir d'une autre page
- 3. Les contrôles ASP.Net apparaissent sur la page, mais pas dans un contrôle utilisateur sur cette page
- 4. Publier sur une page, puis-je accéder aux valeurs de la chaîne querystring?
- 5. Page Web AJAX permettant de naviguer sur la page précédente
- 6. redirigent vers une autre page
- 7. Ouverture de la page Web comme si un lien a été cliqué de la page Web
- 8. Comment activer/désactiver les éléments web d'une page aspx parent depuis la page ascx de l'enfant?
- 9. Comment implémenter la fonctionnalité back dans une page web asp.net?
- 10. Lire la page Web
- 11. Comment contrôler l'emplacement des contrôles ASP.NET dans la page
- 12. Rôles.IsUserInRole() sur la page Ma page de base
- 13. appeler une fonction sur une page à partir d'un lien sur une autre page
- 14. ciblant une nouvelle page pour un lien sur un pdf
- 15. redirigent vers une autre page
- 16. Comment publier sur une page Web
- 17. Répertoire d'accès à la page ASP.Net sur un autre serveur
- 18. Comment superposer une petite page sur une page html?
- 19. Cadres + Contrôles de la page
- 20. Passage d'un objet d'une page à une autre dans ASP.NET
- 21. Passer des valeurs d'une page aspx à une autre?
- 22. Communication entre les contrôles utilisateur sur la page - C#/ASP.NET
- 23. Comment rendre et importer une page asp.net dans une autre page asp.net?
- 24. télécharger la page Web par asp.net
- 25. Comment accéder aux contrôles de page depuis mon contrôle serveur personnalisé?
- 26. Importer la page maître dans une autre page maître dans ASP.NET
- 27. navigation dans la page asp.net
- 28. Comment montrer google map sur une page web sur asp.net?
- 29. Accéder au fichier Global .resx dans ASP.Net Afficher la page
- 30. Publier sur la page Facebook via ASP.NET
Vous pouvez également faire référence à la page précédente via la propriété Page.PreviousPage après l'utilisation de la méthode Server.Transfer(). –
Avec cette méthode, vous supposez que vous savez avec certitude de quelle page vous venez – JohnIdol