Quelles sont les différentes façons de transférer des valeurs d'un code derrière une page à un autre? Les fichiers cachés peuvent-ils fonctionner sans étiquette de formulaire? J'ai 2 codes derrière les pages. Je dois transférer une valeur particulière d'une page et aller chercher dans l'autre code derrière la page. Quelle est la meilleure méthode qui peut être suivie dans cette situation? NB: Comme la taille de la chaîne à transférer est grande, nous ne pouvons pas utiliser Querystring.Passer des valeurs d'une page aspx à une autre?
Répondre
Querystring serait le gagnant. Cependant, si c'est le code que vous essayez d'appeler d'une page à une autre, il semble que vous ayez des problèmes. Le code que vous appelez des deux pages devrait être dans une bibliothèque de classes, mais si c'est le cas, cette réponse serait très longue et certains pourraient dire que la question est trop ouverte.
Étant donné que la taille de la chaîne à transférer est grande, nous ne pouvons pas utiliser Querystring. –
Dove, existe-t-il un autre moyen? ... Pouvons-nous passer des valeurs si les 2 pages ne sont pas dans la même bibliothèque de classes? –
Quelle est la taille? vous pouvez entrer beaucoup dans une chaîne de requête, sinon mettre temporairement en session, cache ou même dans un cookie si cela est autorisé. dépend de votre configuration – dove
Les champs masqués ne peuvent pas fonctionner sans étiquette de formulaire.
a) Vous pouvez afficher la page mettre la valeur particulière dans un domaine HiddenField ou du texte et le récupérer dans la page suivante par string MyVal = Request.Form["FieldName"];
b) vous pouvez envoyer la valeur par querystring. Supposons que vous redirigiez vers default2.aspx avec val = 6 par ex. Response.Redirect("default2.aspx?val=6");
et récupérer dans la page suivante par
string MyVal = Request.QueryString["val"].ToString();
Merci Himadri. Mais comme la taille de la chaîne à transférer est grande, nous ne pouvons pas utiliser Querystring. Quoi d'autre? –
Vous pouvez stocker la valeur en session. Si la concurrence est un problème, vous pouvez utiliser une clé unique (comme un guid) et passer la clé dans la chaîne de requête.
Merci Eric. Pouvez-vous être un peu plus ellaboratif sur la méthode de session? –
Voir la réponse de wef. Je vous recommande également d'examiner les publications inter-pages. –
Première page
//create a unique key
string guid = Guid.NewGuid().ToString();
//store large data in the session
Session[guid] = BIG_VALUE_TO_TRANSFER;
//redirect to new page, passing key as parameter
Response.Redirect("SecondPage.aspx?guid="+guid");
Deuxième page
//retrieve data from session using the key in the querystring
//you should really validate this but i can't be bothered
BIG_TYPE bigvalue = (BIG_TYPE)Session[Request.QueryString["guid"]];
Pour passer des informations d'une page à une autre, il vaut mieux ne pas utiliser Session. – rahul
Les objets de session sont utilisés pour stocker des données spécifiques à une session et non des données spécifiques à une page. – rahul
Ne pas l'écraser si cela fonctionne – wefwfwefwe
Vous pouvez utiliser l'affichage sur plusieurs pages. En utilisant cela, vous spécifiez simplement qu'une page différente doit gérer la publication, voir ce lien: http://msdn.microsoft.com/en-us/library/ms178139.aspx
Je ne recommande généralement pas l'utilisation de variables de session, car elles réduisent l'évolutivité de l'application, et elles ne fonctionnent pas bien. avec capitonné du navigateur
modifier: Une autre option pourrait être de stocker les données dans le HttpContext actuel puis utilisez Server.Transfer
HttpContext.Current.Items["tempData"] = yourLongData;
Server.Transfer("NewPage.aspx");
sur la nouvelle page, vous pouvez lire la valeur de la HttpContext . Cela fonctionnerait car la nouvelle page est traitée dans la même requête, et donc dans le même contexte.
Mais cela ne provoque pas de redirection du client, donc il ne peut pas être applicable dans tous les cas
Pour transférer le contrôle d'une page à une autre, vous pouvez utiliser
Server.Transfer ("newpage.aspx");
Méthode
et pour la valeur passant d'une page à une autre, vous pouvez utiliser le contexte
Context.Items["Value1"] = "value to pass";
et récupérer la valeur dans la page cible
string val = Context.Items["Value1"].ToString(); // check for null
La longueur maximale de querystring sera différent dans les différents navigateurs. De plus, la transmission d'informations sensibles via une chaîne querys n'est pas une bonne approche.
Response.Redirect implique un aller-retour au serveur alors que Server.Transfer conserve les ressources du serveur en évitant l'aller-retour. Il modifie simplement le focus du serveur Web sur une autre page et transfère le traitement de la page vers une autre page.
Si vous utilisez Server.Transfer alors vous pouvez accéder directement aux valeurs, contrôles et propriétés de la page précédente que vous ne pouvez pas faire avec Response.Redirect. Response.Redirect modifie l'URL dans la barre d'adresse du navigateur. Donc, ils peuvent être marqués . Alors que Server.Transfer conserve l'URL d'origine dans la barre d'adresse du navigateur . Il remplace le contenu de la page précédente par la nouvelle page .
Response.Redirect peut être utilisé aussi bien pour les .aspx et pages html alors que Server.Transfer peut être utilisé que pour .aspx pages et est spécifique à ASP et ASP.NET . Response.Redirect peut être utilisé pour rediriger un utilisateur vers un site Web externe . Server.Transfer peut être utilisé uniquement sur les sites fonctionnant sur le même serveur . Vous ne pouvez pas utiliser Server.Transfer pour rediriger l'utilisateur vers une page exécutant sur un serveur différent.
Utilisez session qui faire le travail pour vous, mais depuis la session doit contenir des données de session spécifique, vous devez l'utiliser correctement, vous pouvez également utiliser Server.Transfer
Pour morceaux vraiment grandes quantités de données, il n'y a aucun moyen vous voulez envoyer toutes ces données au client juste pour revenir tout de suite. C'est effectivement ce que vous faites quand vous mettez une valeur comme un champ de formulaire ou une chaîne de requête. Vous allez utiliser la bande passante et ralentir l'expérience de vos utilisateurs.
Le stockage d'énormes quantités de données dans la session est une très mauvaise idée . C'est soit in-proc qui utilise la mémoire principale de votre serveur, soit il est sérialisé vers un autre serveur (State Server), soit stocké dans une base de données (Sql State). Les données de session sont récupérées pour chaque requête. C'est un tueur de performance total .
Si vous avez vraiment besoin de transmettre autant de données d'une page à l'autre, évaluez vos besoins de cohérence. Si c'est vraiment transactionnel, vous avez peut-être besoin de mordre la balle et de stocker dans une base de données. L'autre page peut récupérer si nécessaire.
La plupart des bases de données peuvent (effectivement) stocker n'importe quelle quantité de données que vous leur lancez, mais n'abusez pas de la base de données si vous n'avez pas besoin de la cohérence d'une base de données. Hors du sommet de ma tête, j'irais pour environ 8k de données. Je reconnais varchar (max), etc, mais vous devez évaluer le compromis de stockage de toutes les données (transitoires), l'espace de journal, etc.
Sinon, il n'y a rien de mal à créer un fichier temporaire sur un disque réseau partagé et passer un jeton autour. Utilisez un guid et la date pour générer un nom de fichier unique.
- 1. Rendu d'une page ASPX dans une autre
- 2. Comment passer des valeurs d'une page à une autre dans jQuery
- 3. Comment passer un champ caché d'une page à une autre?
- 4. Passer des valeurs d'un contrôle Usercontrol à un autre UserControl!
- 5. C# Passer des valeurs à un autre formulaire
- 6. Htm page à Aspx page
- 7. Port page ASPX à Sharepoint
- 8. Passer la valeur à la deuxième page (créer & passer var)
- 9. Comment passer une session d'une application à une autre?
- 10. Passer des paramètres à une WPF page via son Uri
- 11. Comment transférer des valeurs de formulaire d'une page asp.net à une autre?
- 12. page ASP.NET appelle une page ASPX supplémentaire après le chargement
- 13. Lettres françaises sur une page aspx
- 14. sauver page ASPX en une image
- 15. Passage d'un objet d'une page à une autre dans ASP.NET
- 16. Obtenir des attributs de la page aspx
- 17. passer une valeur de formulaire à un autre formulaire sur une autre page sans utiliser de variables URL (javascript)
- 18. Comment passer une valeur personnalisée au contrôle asp.net sur la page aspx?
- 19. Passer une requête à un autre contrôleur sur HandleUnknownAction
- 20. Passer une fonction à une autre fonction dans Actionscript 3
- 21. 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?
- 22. rediriger vers une autre page à partir de Silverlight
- 23. url Harden passer à une autre page en utilisant le paramètre
- 24. ASPX lien vers ASPX avec IFRAME (page ASP à l'intérieur) ... maintenant je veux rediriger vers ASPX
- 25. Comment passer à une autre branche subversion dans Intellij?
- 26. Ajout d'une page asp vb dans une page aspx C#
- 27. Passer des valeurs asp.net à la fonction JavaScript
- 28. Comment envoyer une page aspx sous forme d'e-mail Modèle
- 29. Entrez l'événement pour passer à une autre zone de texte
- 30. Passer une valeur d'un MXML à un autre
define large .... –