2010-03-31 4 views
0

Je travaille actuellement sur une application Web utilisant VB dans ASP.NET.Utilisation de POST ou SESSION pour capturer des données

En ce moment j'ai 1 page avec des panneaux que nous utilisons pour montrer/cacher selon le flux. Lorsque l'utilisateur entre en premier, il/elle est présenté avec un gridview contenant une liste de clients. Ensuite, l'utilisateur clique sur un lien d'une ligne et reçoit un formulaire dans lequel il peut mettre à jour les informations des clients.

A l'origine, j'avais un HyperLinkField qui a mis le clientId dans l'url, alors je saisis l'URL et faire le code approprié

<asp:HyperLinkField Text='<%$ Resources:Resource, ManageClient %>' DataNavigateUrlFields="CLIENT_ID" DataNavigateUrlFormatString="~/clients/manage.aspx?clientId={0}" /> 

Maintenant, je suis repensant cela et se demander s'il vaut mieux utiliser sESSIONS pour saisir le clientID via ce lieu

<asp:TemplateField Visible="false"><ItemTemplate><asp:Label runat="server" ID="hidClientId" Text='<%# Bind("CLIENT_ID")%>' Visible="false" /></ItemTemplate></asp:TemplateField> 
<asp:ButtonField Text='<%$ Resources:Resource, ManageClient %>' CommandName="Manage" /> 

Ou utilisez la méthode POST, que je ne sais pas comment cela fonctionne dans .NET (mais je l'ai utilisé en PHP)

Toute h elp serait grandement apprécié.

+0

Est-ce que les données sont postées sur la même page ou allez-vous sur une autre page? – tloflin

+0

Même page ... J'utilise 1 page avec des panneaux pour montrer/cacher les sections nécessaires (gridiew, formulaire, etc ...) – Karinne

Répondre

1

Je pense que vous devriez utiliser Querystrings pour être honnête (comme dans votre premier exemple). La raison principale est que cela permettra aux boutons Précédent/Suivant/Actualiser de fonctionner correctement.

Si vous utilisez une méthode de type post ou postback, vous vous retrouvez dans la situation où un utilisateur peut cliquer sur refresh et obtenir le message de resubmission de formulaire malveillant. Il y a des moments où un poste de formulaire a du sens, mais je ne pense pas que l'envoi d'un seul petit paramètre en fasse partie. Maintenant, si vous voulez toujours la fonctionnalité d'une session où il se souvient de l'état, vous pouvez toujours le faire avec des chaînes querys. Passez simplement la chaîne de requête à la page, définissez la session sur la valeur de la chaîne de requête. La prochaine fois que la page s'affichera sans une chaîne de requête, écrivez du code qui vérifiera si elle a une valeur de session et l'utilisera à la place.

par exemple.

Dim iClientID As Integer 

    If IsNumeric(Request.QueryString("ClientID")) Then 
     iClientID = CInt(Request.QueryString("ClientID")) 
     Session("ClientID") = iClientID 
    ElseIf IsNumeric(Session("ClientID")) Then 
     iClientID = CInt(Session("ClientID")) 
    End If 
+0

Merci pour ce point de vue Steve. Je n'ai pas pensé à ce «cauchemar rafraîchissant»;) Comme je l'ai dit à BritishDeveloper, les données ne sont pas sensibles donc ce n'est pas un gros souci. Je m'assurais surtout que je le faisais correctement. Je vous remercie! – Karinne

1

Je préférerais aussi utiliser des chaînes query. Cela dépend si ces données sont sensibles ou non. Si c'est sensible, j'utiliserais la session puisque la publication croisée est un cauchemar.

+0

Les données ne sont pas "vraiment" sensibles ... le ClientID est simplement un identifiant fourni par la DB. C'est quelque chose comme un numéro d'assurance sociale (NAS). Je vous remercie! – Karinne

Questions connexes