IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

probleme avec le ViewData


Sujet :

ASP.NET MVC

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Points : 92
    Points
    92
    Par défaut probleme avec le ViewData
    slt a vous voila j'ai une liste que j'affiche á travers le viewData.Model mais j'aimerais operer un filtre sur cette liste. j'ai essayé une requete ceci de plusieur maniere et constate par la suite que le rendu n'etait pas le escompté car mon ViewData.Model ne c'est pas reinitaliser alors afin de resoudre ce probleme je solicite une fois de plus votre assistance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
     
        // ma zone de recherche dans ma liste
     
       <% using (Html.BeginForm("AddEtudiant","Home"))
       {%>
            <%: Html.ValidationSummary(true) %>
     
            <fieldset style=" width:35%">
                <legend>Zone de Recherche d un Etudiant </legend>
     
                <div class="editor-label">
                   <label>FirstName</label>
                </div>
                <div class="editor-field">
                    <%: Html.TextBox("FirstName") %>
                </div>
     
                <div class="editor-label">
                    <label> Cycle </label>
                </div>
                <div class="editor-field">
                    <%: Html.TextBox("Cycle") %>
                </div>
     
                <div class="editor-label">
                    <label> Options </label>
                </div>
                <div class="editor-field">
                    <%: Html.TextBox("options") %>
                </div>
     
                <div class="editor-label">
                    <label> Groupe </label>
                </div>
                <div class="editor-field">
                    <%: Html.TextBox("groupe") %>
                </div>
     
                <div class="editor-label">
                   <label> Niveau </label>
                </div>
                <div class="editor-field">
                    <%: Html.TextBox("Niveau") %>
                </div>
     
                <p>
                    <input type="submit" value="Rechercher" />
                </p>
            </fieldset>
     
        <% } %>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
         //mon controller
     
     
          public ActionResult ListeEtudiant()
            {
     
             // affichage par defaut
     
                if (ViewData["listetude"] == null)
                {
                    var EtudiantListe = from et in _db.Etudiants
                                        join etm in _db.EtudiantMatieres
                                        on et.EtudiantId equals etm.EtudiantId
                                        select new EtudiantModel
                                        {
                                            EtudiantId = et.EtudiantId,
                                            FirstName = et.FirstName,
                                            LastName = et.LastName,
                                            Sexe = et.Sexe,
                                            Numero = et.Numero,
                                            Contact = et.contact,
                                            Matricule = et.Matricule,
                                            Email = et.Email,
                                            Cycle = etm.Cycles,
                                            options = etm.options,
                                            groupe = etm.groupe,
                                            Niveau = etm.Niveau
     
                                        };
     
                    ViewData.Model = EtudiantListe;
                }
     
                //affichage apres filtrage en fontion de infos de la zone de recherche
     
       if (ViewData["listetude"]!=null)
     
                {  
                        string query = "";
                        string select = "";
                        string from = "";
                        string where = "";
     
                        select = "SELECT * ";
                        from = " FROM Etudiant,EtudiantMatiere ";
                        where = " WHERE Etudiant.EtudiantId = EtudiantMatiere.EtudiantId ";
     
                        if (forme["FirstName"].Length > 0)
                        {
                            where = where + " AND Etudiant.FirstName  LIKE  '%" + forme["FirstName"] + "%'";
                        }
                        if (forme["Cycle"] !="0")
                        {
                            where = where + " AND EtudiantMatiere.Cycles LIKE  '%" + forme["Cycle"] + "%'";
                        }
     
                        if (forme[" options"] !="0")
                        {
                            where = where + " AND EtudiantMatiere.options LIKE  '%" + forme[" options"] + "%'";
                        }
     
     
                        if (forme[" groupe"]!="0")
                        {
                            where = where + " AND EtudiantMatiere.groupe LIKE  '%" + forme[" groupe"] + "%'";
                        }
     
                        if (forme["Niveau"].Length > 0)
                        {
                            where = where + " AND EtudiantMatiere.Niveau LIKE  '%" + forme["Niveau"] + "%'";
                        }
     
     
                        query = select + " " + from + " " + where;
     
     
                       var EtudiantListe =  _db.ExecuteStoreQuery<EtudiantModel>(query).ToString();
     
                       ViewData.Model = EtudiantListe;
         }
     
                return View();
            }
     
      //
     {
     
                      public ActionResult AddEtudiant(FormCollection form)
            {
     
               if(string.IsNullOrEmpty(form["Rechercher"]))
               {
     
                   forme = form;
                   ViewData["listetude"] = "Initialiser";
                   ListeEtudiant();
                   return RedirectToAction("ListeEtudiant");
     
               }
     
      // notons que forme est variable FormeCollection global
    comme vous pouvez le voir ListeEtudiant est appelle apres excution du button recherche et l'initialisation du ViewData["listetude"] avant l'appelle permet excusion du bloque de filtrage pourtant au rendu j'obtient la meme liste au lieu d'une liste filtre.
    alors que faire,comme resoudre ce probleme?
    toute aide,assistance ou conseil sera la bien venus.
    a++

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 69
    Points : 82
    Points
    82
    Par défaut
    Il faut utiliser TempData et pas ViewData pour concerver l'état entre deux requette, voir doc.
    Sinon tu peux utiliser un IQueryable pour construire ta requette linq, au lieu de passer par des requette SQL classic.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IQueryable etudiant = dcContext.Etuditant.Where(e=> e.FirstName.Contains(form["firstName"]);
     
    IQueryable etudiant = etudiant.Where(e=> e.Toto.Contains(form["firstName"]);
    Par ailleur tu utilise form au lieu de passer par le model binding, ce qui montre que tu utilise très mal les fonc de MVC, voir model binding, parametre passé dans la func de ton action.

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo