Problème variables de session

Fermé
Pasteck_friite Messages postés 2 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 19 mai 2015 - 19 mai 2015 à 11:23
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 - 19 mai 2015 à 11:42
Bonjour,

En ce moment, je fait un TP sur ASP.NET et on nous demande d'afficher sur notre page une liste de livres préalablement ajouter à 3 bases de données (Access, Oracle et XML). De plus, on nous demande d'avoir une page où l'on choisit l'une de ces bases de données pour afficher les livres.

Donc normalement, je lance l'appli, je clique sur un lien (prenons Oracle), ça m'ouvre une autre page avec tout les livres sur la bdd Oracle. Jusque là, tout va bien.

Le problème, c'est que quand je reviens sur la première page et que je sélectionne une autre bdd, il reste sur celle d'Oracle. Ça me fait le même problème avec XML mais pour Access, j'ai ce message d'erreur :
"Une exception de type 'System.ArgumentOutOfRangeException' s'est produite dans mscorlib.dll mais n'a pas été gérée dans le code utilisateur. Informations supplémentaires : L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection."

Voici mon code pour la page avec l'affichage des livres:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ProjetLivre;

namespace SiteWebLivre.Version_3
{
    public partial class PageLivre4 : System.Web.UI.Page
    {
        private List<Livre> mesLivres;
        private string chemin = @"~/Images/";

        protected void Page_Load(object sender, EventArgs e)
        {
            LivreDAL mesLivresDAL;
            string bdd;
            if (Session.Count == 0)
            {
                bdd = Request.QueryString["choix"];
                if (bdd == "Oracle" || bdd == "Access")
                    mesLivresDAL = new LivreDAO(bdd);
                else
                    mesLivresDAL = new LivreXML();
                Session["mesLivres"] = mesLivresDAL.getLivres();
                Session["position"] = 0;
            }
            mesLivres = (List<Livre>)Session["mesLivres"];
            afficherUnLivre(mesLivres[(int)Session["position"]]);
        }

        protected void afficherUnLivre(Livre unLivre)
        {
            int pos = (int)Session["position"];
            LABPos.Text = string.Concat("N°: "+ (pos+1).ToString());
            LABAuteur.Text = unLivre.auteur;
            LABTitre.Text = unLivre.titre;
            LABGenre.Text = unLivre.genre;
            LABNbPages.Text = unLivre.nbPages.ToString();
            TXTResume.Text = unLivre.resume;
            PICTCouv.ImageUrl = string.Concat(chemin, unLivre.couverture);
        }

        protected void BTN_Precedent(object sender, EventArgs e)
        {
            int pos = (int)(Session["position"]);
            if (pos > 0)
                pos--;
            Session["position"] = pos;
            afficherUnLivre(mesLivres[(int)Session["position"]]);
        }

        protected void BTN_Suivant(object sender, EventArgs e)
        {
            int pos = (int)(Session["position"]);
            if(pos < (mesLivres.Count-1))
                pos++;
            Session["position"] = pos;
            afficherUnLivre(mesLivres[(int)Session["position"]]);
        }
    }
}


Merci d'avance

2 réponses

VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
19 mai 2015 à 11:26
Pourrais tu référencer dans ton code ou se produit cette erreur ?

Merci !
0
Pasteck_friite Messages postés 2 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 19 mai 2015
19 mai 2015 à 11:37
Mon erreur ce fait à la ligne 31.
0
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
19 mai 2015 à 11:42
Ne tenterais tu pas d'afficher un livre à une position qui n'existe pas ? soit le livre n'existe pas soit tu références mal ta position ... tu peux toujours mettre ses étapes là en try-catch .. ainsi si ça ne tourne pas c'est qu'il y a un problème d'index .. mais ce n'est pas logique ..
0