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 Discussion :

Form dynamique et POST


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut Form dynamique et POST
    Bonjour,

    J'ai créé une page contenant un tableau avec des checkbox dynamiques.

    Ma liste est donc créée de la façon suivante :

    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
     
                @using (Html.BeginForm("SupprimeConges", "Home", FormMethod.Post))
                { 
      @foreach (var DemandeConges in (ViewData["DemandeCongesDemander"] as List<DataAccess.Presence>))
                                    {
                                        <tr>
                                            <td style="padding:0;">
                                                <p>@DemandeConges.Type_Presence.LibelleCourt</p>
                                            </td>
                                            <td>
                                                <p>@DemandeConges.AffichageDate</p>
     
                                            </td>
                                            <td >
                                                <input type="checkbox" name="test" value="@DemandeConges.ID" />
                                            </td>
                                        </tr>
    }
    Comment lors de l'envoi du formulaire je peux récupérer toutes les checkbox qui sont choisies ?

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    Pour poster des listes en mvc c'est la plaie, il va falloir que tu generes toit-meme les names de tes checkbox, cela doit ressmbler a un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    name="DemandeConges[0].ID"
    name="DemandeConges[1].ID"
    => avec les index partants de 0 et consecutifs.
    => cote controlleur cela devraqit posetr une liste de DemandeConges

    quelques exemples:
    http://haacked.com/archive/2008/10/2...o-a-list.aspx/

  3. #3
    Membre averti

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Points : 310
    Points
    310
    Par défaut
    Salut,

    Je n'ai malheureusement pas encore eu l'occasion de beaucoup jouer avec MVC mais vu la manière dont ton HTML est construit, je serai tenté de dire que tu n'as pas grand chose à faire dans le sens où les valeurs des contrôles seront logiquement embarqué dans la requête post.

    Du coup, tu devrais pouvoir accèder à ces infos via un Request.InputStream, par exemple.

    En espérant t'avoir aidé...

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    Ok.

    Dans l'exemple que tu as donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    name="DemandeConges[0].ID"
    name="DemandeConges[1].ID"
    DemandeConges[] sera récupérer comment coté contrôleur ?

    De plus pourquoi le .ID ? Le 0 et 1 sont l'index unique que je peux remplacer par @i ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    De plus pourquoi le .ID ? Le 0 et 1 sont l'index unique que je peux remplacer par @i ?
    Les 0 et 1 sont les index de tes items

    Voila un exemple pour le faire en notation classique

    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
    <% for (int i = 0; i < 3; i++) { %>
     
                <tr>
                    <td>
                        <%: Html.TextBoxFor(m => m[i].Title) %>
                        <%: Html.ValidationMessageFor(m => m[i].Title) %>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(m => m[i].Author) %>
                        <%: Html.ValidationMessageFor(m => m[i].Author) %>
                    </td>
                    <td>
                        <%: Html.TextBoxFor(m => m[i].DatePublished) %> 
                        <%: Html.ValidationMessageFor(m => m[i].DatePublished) %>
                    </td>
                </tr>
            <% } %>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [HttpPost]
            public ActionResult Sequential(ICollection<Book> books)
            {
                return View(books);
            }
    => lis biens les liens que je t'ai file tout est dedans, en razor ca donnerai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @for(var i = 0;i < Model.People.Count;i++)
    {
        <tr>
            <td>@Html.TextBoxFor(m => Model.People[i].Name)</td>
            <td>@Html.TextBoxFor(m => Model.People[i].Age)</td>
        </tr>
    }

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    J'ai un doute quant à l'utilisation de modèle pour ce qui est de la partie Razor.

    Dans mon cas il s'agit d'une liste d'ID voué à la suppression.

    Du coup ça serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Html.CheckBox("Je ne sais quoi mettre ici")
    ok, merci beaucoup.


    ps : Je suis complètement débutant dans le domaine

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    J'ai fini par mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Html.CheckBox("Demande["+i+"]"+DemandeConges.ID)
    ce qui me retourne un html dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" value="true" name="Demande[0]131100" id="Demande_0_131100">
    Mais je ne sais pas comment le récup coté contrôleur...

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Essaie plutot ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Html.CheckBox("Demande["+i+"]ID")
    Et pour recuperer dans le controleur:

    public ActionResult Post(ICollection<Demande> demandes) {
    ...
    }

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur Junior développement logiciels
    Inscrit en
    Mai 2014
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Junior développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 198
    Points : 113
    Points
    113
    Par défaut
    J'ai fini par faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="deleteInputs" value="@DemandeConges.ID" style="float: left; margin: 0;" />

    puis mon post ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public ActionResult SupprimeConges(int[] deleteInputs)
    Merci pour tout

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

Discussions similaires

  1. Question sur l'affichage d'une form dynamique?
    Par Jayceblaster dans le forum Delphi
    Réponses: 1
    Dernier message: 18/09/2006, 15h36
  2. <form action="" method="post" >
    Par sagitarium dans le forum Langage
    Réponses: 4
    Dernier message: 19/05/2006, 23h46
  3. [MySQL] Multiples valeurs dynamiques en POST
    Par Runan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/05/2006, 11h44
  4. Forms "dynamiques"
    Par mobee dans le forum C++Builder
    Réponses: 7
    Dernier message: 20/12/2005, 17h41
  5. Réponses: 4
    Dernier message: 30/09/2004, 14h55

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