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 :

Duplication enregistrement dans mon controleur [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Par défaut Duplication enregistrement dans mon controleur
    Bonjour,

    Voilà mon souci :

    Je voudrai dupliquer l'enregistrement d'une table tout en modifiant l'un des champs de façon automatique.

    Exemple :

    J'affiche dans ma vue un formulaire avec x champs qui correspondent à ma table CONTRATS :

    Champ 1 idcont (caché) : id du contrat (valeur auto incrémenter)
    Champ 2 numcont : N° contrat
    Champ 3 clicont : Nom du client
    Champ 4 effetcont : Date d'effet du contrat

    En dessous il y a un bouton "Dupliquer" qui permet de dupliquer l'enregistrement dans la base tout en rajoutant dans le champ numcomp une chaine de caractère "duplicata" pour différencier les enregistrements.

    Quelle doit être l'action (simple si possible) dans mon contrôleur ?

    D'avance merci.

    Cordialement

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 32
    Par défaut
    Bonjour
    Si je comprend bien tu veux enregistrer l'objet 2 fois.

    Dans votre controlleur
    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
     
     
    [HttpPost]
    public ActionResult NomAction(CONTRATS contrats)
    {
      if(modelState.IsValid){
      //Enregister dans la bdd en utilisant entity framework
      db.CONTRATS.add(contrats);
      //Modifier le champ
      contrats.numcont += "duplicata";
      //Enregister
      db.CONTRATS.add(contrats);
      db.SaveChanges();
      }
    }
    Cordialement

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Par défaut
    Bonjour,

    Ta question est pertinente, Serizawa.

    En fait non je veux juste créer un enregistrement identique à un enregistrement existant (la seule différence concerne donc le numéro du contrat - on ajoute "duplicata" pour que l'utilisateur les différencie - et bien sur l'id)

    Cordialement

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 32
    Par défaut
    Donc tu récupère l'enregistrement existant par son id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    long id = //Ici l'id pour récupérer le contrat
    CONTRAT contrat = db.CONTRATS.FirstOrDefault(x => x.id == id);
    contrat.numcont += "duplicata";
    //Et ajouter à nouveau
    db.CONTRATS.add(contrat);
    db.SaveChanges();
    Cordialement

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Par défaut
    Bonjour,

    Ca marche nickel.

    Question subsidiaire :

    Comment faire pour dupliquer aussi (de façon relativement simple) les tables liées.

    Je m'explique : Si je reprends mon exemple, j'ai une table contrats et cette table est liée à une table factures par exemple. La relation est simple pour chaque contrat il existe 0 ou x factures et chaque facture est liée à un seul contrat.

    Lorsque je duplique un enregistrement de la table contrat, j'imagine que dans l'exemple donné par Serizawa seul l'enregistrement de la table contrat est dupliqué. Si je veux dupliquer maintenant les enregistrements de la table facture pour les copier dans mon nouvel enregistrement contrat, est ce possible de le faire simplement ?

    Merci d'avance

    Cordialement

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 32
    Par défaut
    Oui bien sur
    tu modifie le code précédent avec celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    long id = //l'id choisi
    contrat ct = db.contrats.AsNoTracking().Include(x => x.Factures).FirstOrDefault(x => x.id == id);
                ct .nom += "duplicata";            
                db.contrats.Add(ct );
                db.SaveChanges();
    La méthode AsNoTracking retourne une requête qui n'est pas mise en cache donc le context ne va pas suivre le changement et il ajoute des nouvelles ligne dans la table Facture.

    Cordialement.

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 65
    Par défaut
    Bonjour,

    Enorme merci à toi Serizawa, ça marche parfaitement bien !

    Je suis stupéfait par la puissance de ce truc. Quant on vient de l'ASP, ça laisse songeur.

    Cordialement

  8. #8
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2013
    Messages : 32
    Par défaut
    "puissance" vraiment cette technologie est puissante ^^
    ASP, C#, Visual studio c'est la puissance plus la sécurité
    Bonne continuation.

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

Discussions similaires

  1. [Débutant] rechercher un enregistrement dans mon modèle
    Par DaCoolG dans le forum ASP.NET MVC
    Réponses: 9
    Dernier message: 30/12/2013, 14h13
  2. [2.x] Filtrage en fonction de la date du jour dans mon controleur
    Par yakuzabj dans le forum Symfony
    Réponses: 4
    Dernier message: 22/05/2012, 16h41
  3. Problème duplication enregistrement dans access
    Par nathan25 dans le forum IHM
    Réponses: 3
    Dernier message: 15/12/2010, 14h17
  4. [Forum] Erreur lors de l'enregistrement dans mon forum
    Par mflat2 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/06/2010, 12h22
  5. Il manque des enregistrements dans mon formulaire
    Par Oneria dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 11/07/2007, 12h03

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