Session et classe

Utilisateur anonyme - 25 mars 2005 à 12:35
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 - 5 avril 2005 à 22:12
Comment faire pour tester si un session est créé en sachant que celle-ci si elle est créé contient une class.



Si la session n'est pas créé mon test marche

Session.Contents("MonPanier") = ""

par contre si la session est créé et que je retest ca me met ça comme erreur.



Dans ma session je met ça si elle est pas créé :



Session.Contents("MonPanier") = Panier()



Panier() c'est ma class



Operator is not valid for type 'Panier' and string ""



Merci de me répondre ++


On a rien sans rienf

15 réponses

cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
25 mars 2005 à 16:55
Salut

Ton 'Panier' te renvoie quoi comme type de données ? Une variable ?
Parce que là on dirait qu'il renvoie un événement...

En gros, dans ta classe, 'Panier' c'est quoi, une Property, un Sub...?

Nurgle
C'est une grande folie que de vouloir être sage tout seul !
0
Utilisateur anonyme
25 mars 2005 à 17:28
Ben il a une méthode ki me renvoi des articles mes à la base le panier renvoi rien du tout.

On a rien sans rien
0
Utilisateur anonyme
25 mars 2005 à 17:28
Class Panier

Private _iIDUser As Integer

Private _iArticle() As Integer

Private _iNBArticle() As Integer

Private _iPosition As Integer



' Constructeurs

Public Sub New()

_iIDUser = 0

_iPosition = 0

reDim _iArticle(100)

reDim _iNBArticle(100)

End Sub



' Propriétés

Public Property User As Integer

Get

Return _iIDUser

End Get

Set (ByVal Value As Integer)

_iIDUser = value

End Set

End Property



Public Property Article(ByVal Position As Integer) As Integer

Get

Return _iArticle(Position)

End Get

Set (ByVal Value As Integer)

_iArticle(Position) = value

End Set

End Property



Public Property NBArticle(ByVal Position As Integer) As Integer

Get

Return _iNBArticle(Position)

End Get

Set (ByVal Value As Integer)

_iNBArticle(Position) = value

End Set

End Property



Public Property Position As Integer

Get

Return _iPosition

End Get

Set (ByVal Value As Integer)

_iPosition = value

End Set

End Property



' Méthodes

Public Function fnAjout(ByVal Article As Integer, NBArticle As Integer)

_iArticle(_iPosition) = Article

_iNBArticle(_iPosition) = NBArticle

_iPosition = _iPosition + 1

End Function

End Class



voilé ma class

On a rien sans rien
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
25 mars 2005 à 18:22
Dans ce cas c'est une méthode, et tu ne peux pas stoquer une méthode dans une variable de Session ! Tu peux y stocker uniquement une variable (comme son nom l'indique...)!

Mais je comprends pas ce que tu fait avec les Sessions : le principe d'une classe étant d'éviter d'avoir des fonctions et des variables de sessions...

Si j'ai bien compris tu veux tester si la classe a été lancée ou si elle ne l'a pas été ?

Nurgle
C'est une grande folie que de vouloir être sage tout seul !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
26 mars 2005 à 00:35
Salut,

Tu ne peux pas mettre une classe dans une session, mais uniquement un objet (une instance de ta classe):

Dim monPanier as Panier
monPanier = New Panier()

Session.Contents("MonPanier") = monPanier

Apparemment (je me trompe ?) c'est de l'ASP et pas de l'ASP.NET
...
en asp tu ne peux pas mettre d'objet en session.

yopyop
0
Utilisateur anonyme
26 mars 2005 à 19:54
Oui c possible mais je ne veut pas instancier ma class à chaque
chargement de la page c pour cette raison que je test si ma session
contien déjà quelque chose.

On a rien sans rien
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
26 mars 2005 à 20:09
Tu es obligé de l'instancier à chaque chargement de la page...

Ou tu peux peut être le faire dans le global.asa ?
(ça marche bien pour des objets comme les bases de données, alors pourquoi pas pour une classe dans ce genre là...)
Tu pourrais l'instancier dans le Application_OnStart comme ça ta classe 'Panier' est accessible depuis toutes tes pages (enfin, je crois...).

Nurgle
C'est une grande folie que de vouloir être sage tout seul !
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
27 mars 2005 à 03:51
Ok,

Au risque de me répéter un peu, en ASP 3.0 tu ne peux pas mettre une classe en session...(en fait dans uncun language que je connaisse)... tu ne peux pas non plus y charge une instance d'une classe...

En effet, les classes que tu crées ASP ne sont pas des "vrais" objets (pas comme une connection ou un recordset, ...)..
Lorsque tu mets ta connection en mémoire, tu ne mets pas un objet vbs (ASP) mais un objet issu d'une dll (Server.CreateObject(".....")).

Ce que tu peux faire, c'est ajouter une méthode à ton objet qui se sauve et se retrouve dans la variable session. Pour cela tu dois transformer toutes tes données en string.

Public Function SaveToSession()
Dim strValues
strValue = Cstr(_IDUser) & "#" & Join(_iArticle,"**") & "#" Join(_iNBArticle,"**") & "#" & CStr(_iPosition)
Session("monPanier") = strValues
End Function

Public Function LoadFromSession()
Dim strValues()
If Trim("" & Session("monPanier"))<>"" Then
strValues = Split(Session("Panier"),"#")
_IDUser = strValues(0)
_iArticles = Split(strValues(1),"**")
_iNBArticle = Split(strValues(2),"**")
_iPosition = strValues(3)
End If
End Fucnction

Ou alors tu crées une dll pour ton objet et là tu pourras le mettre directement dans la variable session (tout comme une connection, un recordset, ...)

PS:
je suis pas sûr à 100% du code mais il devrait fonctionner.

yopyop
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
27 mars 2005 à 03:52
strValue = Cstr(_IDUser) & "#" & Join(_iArticle,"**") & "#" Join(_iNBArticle,"**") & "#" & CStr(_iPosition)

strValues = Cstr(_IDUser) & "#" & Join(_iArticle,"**") & "#" Join(_iNBArticle,"**") & "#" & CStr(_iPosition)

mfff

yopyop
0
Utilisateur anonyme
27 mars 2005 à 12:17
Ecoute si je te dis que tu peux mettre une class dans un session en ASP.NET. mon code est en ASP.NET si ta pas remarqué...



J'en suis sûr que tu peux tu fais juste Session.Contents("MonPanier") = New Panier()



Ensuite si tu va sur une autre page tu peux récupéré toutes les fonction de ta class en fesant ça :



Session.Contents("MonPanier").fnAjout(IDArticle, NBArticle)



Voilà ça, ça marche nickel, crois moi je l'ai fait

On a rien sans rien
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
27 mars 2005 à 15:03
oups,
désolé ... j'avais pas vu que c'était du .NET

Bein alors ton cas est résolu si
Session.Contents("MonPanier").fnAjout(IDArticle, NBArticle) fonctionne....
yopyop
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
27 mars 2005 à 15:19
De l'asp.net ?
désolé, j'avais pas capté......

Nurgle
0
Utilisateur anonyme
29 mars 2005 à 13:12
Lol c'est pas grave... Merci pour votre aide... je vais essayet le test.

On a rien sans rien
0
Utilisateur anonyme
29 mars 2005 à 13:16
Ben ton test marche po....



Il fo que je teste si la session est lançé ou pas...



Ragarde le test que g pour le moment



If Session.Contents("MonPanier") = ""

Session.Contents("MonPanier") = New Panier()

End if



En fait il ne fo pas que ma session se lance plusieurs fois qu 'une
fois pour chaque visiteur. Sinon tout les articles kil auras commendé
seront supprimé.




On a rien sans rien
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
5 avril 2005 à 22:12
re,

Panier() est bien un objet ? Et si je me souviens bien, un objet vide n'est pas égal à "" mais à nothing !!

If Session.Contents("MonPanier") = nothing
Session.Contents("MonPanier") = New Panier()
End if

(en asp3 c'est 'nothing', mais ça doit exister aussi en asp.net......peut être sous un autre nom)

@+

Nurgle
C'est une grande folie que de vouloir être sage tout seul !
0
Rejoignez-nous