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 :

MVC : Formulaire de commandes


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut MVC : Formulaire de commandes
    Bonjour à tous,

    Cela fait déjà quelques mois que je bosse sur en MVC 2 avec EntityFramework, et franchement j'adore. Mais il m'arrive d'avoir encore quelques soucis, comme celui-ci, je suis bloqué depuis 2 jours.

    J'ai une vue contenant un formulaire, et un joli submit à la fin qui envoie les données vers la bonne action. Pas de soucis de ce côté là.

    Le principe de cette page est censé être simple, on veut créer une nouvelle commande, mais, selon le type de commande sélectionner dans une liste déroulante, on affiche des groupes d'articles différents.

    Ces articles sont censés être ajoutés (ainsi que le nombre désiré), alors que la commande n'est pas encore créée en DB. Une fois qu'on cliquerait sur "Enregistrer", la commande serait créée ainsi que tous ses articles.

    Avant d'exposer le problème, voici un résumé de ma vue :

    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
        <% Html.EnableClientValidation(); %>
        <% using (Html.BeginForm("CreateNewOrder", "Order"))
           {%>
           <%: Html.ValidationSummary(true) %>
     
    [ plein de contrôles de saisie, puis : ]
     
    <td>
        <%: Html.Label("Type de la commande") %>
    </td>           
    <td>
        <%: Html.DropDownList("TypeID", (ViewData["typesList"] as SelectList)) %>
    </td>
     
    <div id="itemsPane">
     
    </div>
     
    <input type="submit" name="submitButton" value=" Enregistrer " />
     
    $(function () {
         $('#TypeID).change(function (event) {
                        $('#itemsPane).load('Service/LoadOrderItems',
                         { orderID: $("#OrderID").val(), typeID: ("#TypeID").val() });
         });
    });
    Lorsque la liste de "Types" est changée, l'action "LoadOrderItems" est appelée, ce qui va remplir le contenu du div "itemsPane". Tout ça fonctionne très bien et j'ai l'habitude de bosser comme ça. Ce qui est nouveau en revanche, c'est que ce contenu est censé être modifiable.

    Une fois l'affichage des articles (items) terminé (en moyen d'une boucle sur le Model envoyé à la PartialView), j'ai :
    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
     
    <% if (Model == null || Model.Count < 5)
         { %>
               <tr>
                   <td>
                      <%: Html.DropDownList("ItemID", (ViewData["itemsList"] as SelectList))%>
                   </td>
                   <td>
                      <%: Html.TextBox("ItemsNumber", 1) %>
                    </td>
                    <td>
                        <input type="submit" name="submitButton" value=" Ajouter " />
                    </td>
               </tr>
    <% } %>
    </table>
    Ceci afin de choisir un article dans une liste déroulante (ItemID), d'indiquer le nombre désiré (ItemsNumber initialisé à 1), pour ensuite cliquer sur un bouton "Ajouter".

    Ce "bouton" pourrait tout aussi bien être un ActionLink, mais je n'arrive à rien pour le moment.

    En résumé donc : Que puis-je faire pour gérer cette liste d'articles en évitant des bêtes POST (comme j'ai essayé de faire ci-dessus) alors que l'objet "Order" n'est pas encore créé.

    Bien entendu la structure de données est déjà prévue pour le faire : "Order" contient bien une liste d'objets "OrderItems".

    Je n'ai peut-être pas très bien expliqué mon problème (je suis un peu sur les nerfs depuis deux jours à cause de ça), n'hésitez pas à me demander plus d'info si je n'ai pas été clair.

    D'avance merci à vous !
    Slicta.

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Bon, oubliez...

    J'ai résolu mon soucis en transformant les articles en XML et en les mettant en Session.

    Bonne journée à vous.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SLicTa Voir le message
    J'ai résolu mon soucis en transformant les articles en XML et en les mettant en Session.
    Je pense que l'étape qui consiste à parser tes articles en XML, ne devrait pas avoir lieu . Il suffit juste de décorer ta classe Article avec l'attribut Serializable. Ainsi tes données seront automatiquement mises en XML par ASP.Net au moment de la sauvegarde de la session.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. formulaire de commande
    Par nhynhy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/02/2008, 17h12
  2. [Spring MVC] Formulaires, contrôleurs.. besoin d'aide.
    Par Invité dans le forum Spring Web
    Réponses: 6
    Dernier message: 13/07/2007, 16h25
  3. [Formulaires][03] commandes internet
    Par ThieBEN dans le forum IHM
    Réponses: 1
    Dernier message: 30/05/2007, 09h50
  4. pb sur formulaire de commande
    Par wamkey dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2006, 09h45
  5. [Spring MVC] Formulaire dynamique
    Par partyboy dans le forum Spring Web
    Réponses: 7
    Dernier message: 17/10/2005, 10h52

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