Vous disposez de nombreuses options pour transmettre des données et toutes peuvent transmettre plusieurs valeurs entre les pages.
Vous pouvez utiliser la collection Request.Form pour capturer les valeurs qui ont été soumises à partir d'un formulaire HTML avec le
verbe POST (ie "method =" POST ">) Le code ressemble à:.
Dim formvalue As String
formValue = Request.Form("FormField1")
vous pouvez également utiliser des paramètres dans une URL query string (un peu comme vous par exemple):
Dim queryStringValue As String
queryStringValue = Request.QueryString("QueryStringValue1")
vous pouvez définir un cookie (il La durée de vie dépend de la valeur de la propriété Expiry que vous avez définie):
Définition d'un cookie (remarque: vous utilisez ici l'objet HttpResponse. Le navigateur de l'utilisateur stocke le cookie quand il reçoit la valeur d'en-tête HTTP Set-Cookie de la réponse à une demande)
Response.Cookies("CookieValue") = "My Cookie Data"
Response.Cookies("CookieValue").Expires = DateTime.Now.AddDays(1) ' optional, expires tomorrow
Récupération d'une valeur de cookie (nous utilisons l'objet HttpRequest ici):
Dim cookieValue As String
cookieValue = Request.Cookies("CookieValue")
Vous pouvez utiliser l'objet HttpSessionState (accessible via la propriété Session d'une page). Pour définir une variable de session:
Session["SessionValue"] = "My Session Value"
Pour récupérer une valeur de session:
Dim sessionValue As String
sessionValue = Session["SessionValue"]
Il y a une autre façon de passer l'état de la page entre les pages à l'aide Page.Transfer
(voir How to: Pass Values Between ASP.NET Web Pages), mais je vais essayer et être à l'aise avec ce qui précède avant de regarder dans cela.
En ce qui concerne les bonnes pratiques, cela dépend vraiment des données que vous transmettez.
- Ne pas envoyer des données sensibles via des URL (chaînes de requêtes), les formulaires ou les cookies. Celles-ci peuvent être interceptées de différentes manières
- Transmettez des données sensibles à l'aide d'un magasin côté serveur (comme un état de session ou une base de données), mais envisagez la façon de conserver l'ID de session en toute sécurité.
- jamais données de confiance de l'extérieur de votre application (données que les utilisateurs sont entrés via un formulaire, les informations lues à partir d'une base de données, etc.). Toujours encoder ces informations avant de les afficher à nouveau dans vos pages. Cela empêche contre Cross-Site Scripting (a.k.a XSS) attacks.
- N'utilisez pas d'ID séquentiel dans les chaînes de requête dans lesquelles vous passez des identifiants spécifiques à l'utilisateur entre les pages. Supposons que vous créez une page Orders.aspx répertoriant toutes les commandes d'un client. Vous passez un paramètre CustID via une chaîne de requête: Orders.aspx? CustID = 123. Il est facile pour quelqu'un de changer l'URL en Orders.aspx? CustID = 124 et d'afficher les informations qu'ils ne devraient pas. Vous pouvez contourner ce problème en vérifiant que l'utilisateur actuel est autorisé à voir les informations, vous pouvez utiliser un identfier qui ne peut pas être facilement deviné (généralement un GUID) ou transmettre les informations du côté serveur.
Pouvez-vous utiliser des champs de formulaire cachés pour une requête croisée page asp.net? – Andomar
@Andomar: Vous pouvez utiliser la méthode Page.PreviousPage.FindControl ("hiddenControl") pour accéder au champ masqué. Référence: http://www.codeproject.com/KB/aspnet/CrossPagePosting.aspx – Kirtan