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 :

Problème avec Create ActionMethod et relation


Sujet :

ASP.NET MVC

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Problème avec Create ActionMethod et relation
    Bonjour,

    Petit problème dans la réalisation de mon premier site MVC...
    J'ai xeux tables
    Une table "Devis" qui contient:
    • ID
    • NumeroDevis
    • DateDevis
    • Libelle


    Et une table "Révision" qui contient
    1. ID
    2. NumeroRevision
    3. DateRevision
    4. Montant
    5. IdDevis


    Mon problème est le suivant : lorsque je créé un nouveau Devis (ActionMethod Create) je voudrais créer par défaut une nouvelle révision (NumeroRevision=1 et DateRevision = DateTimeNow) que l'utilisateur puisse renseigner le numero de devis, la date du devis le libellé et aussi le montant pour cette revision.
    J'espère que je suis clair et vous remercie pour votre aide.

    Stef

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Je pense que ton soucis est avant tout un soucis d'architecture. J'ai bricolé ça vite fait, ça répond à ton problème : Sfauchille.Exemple.rar

    .../Devis/Index pour tester

    Comme tu le verra, il y a plusieurs couches, et chacune répond à un besoin particulier :

    - Web : Les contrôleurs et les vues. Ils contrôlent et affichent les résultats.
    - BLL : Contient la logique métier.
    - DAL : Parle à la couche de persistance des données.

    Bon, je dois avouer que j'ai un peux cassé le pattern par moment pour gagner du temps, mais le principe est là.
    Ca peut sembler lourd, mais dans la majeure partie des cas, tu y gagnera au final.



    Ton schéma de base de données serait peut-être à revoir légèrement. Je ne vais cependant pas m'aventurer là dedans, c'est clairement pas mon domaine.



    Ce que je te propose là n'est pas LA solution. Tu n'auras par ailleurs probablement pas de mal à l'améliorer.


    Si tu as des questions sur ce bout de code, n'hésites pas


    N.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Salut,

    Je te remercie pour ta réponse mais étonnement je n'arrive pas à ouvrir ton projet. J'ai regardé tes fichiers et j'ai presque tout compris.

    Néanmoins c'est lorsque que je créé un nouveau devis que je souhaite par défaut créer une révision.

    j'ai procédé de la manière suivante

    Création d'un modèle

    public class DevisViewModel
    {
    public int Id { get; set; }

    public string NumDevis { get; set; }
    public DateTime DateDevis { get; set; }
    public string Libelle { get; set; }
    public int Probabilite { get; set; }
    public Utilisateur Utilisateur { get; set; }
    public Revision Revision { get; set; }
    public Client Client { get; set; }


    }

    Et dans le controleur :
    public ActionResult Create()
    {

    var DevisViewModel = new DevisViewModel();

    return View(DevisViewModel);
    }

    //
    // POST: /Devis/Create

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(DevisViewModel DevisViewModel)
    {
    if (ModelState.IsValid)
    {
    var currentuserid = WebSecurity.GetUserId(User.Identity.Name);
    var devis = new Devis { NumDevis = DevisViewModel.NumDevis, DateDevis = DevisViewModel.DateDevis, Libelle = DevisViewModel.Libelle, Probabilite = DevisViewModel.Probabilite, ClientId = 1, UtilisateurId = currentuserid };
    AddRevision(devis, DevisViewModel.Revision.Montant);
    db.Devis.Add(devis);
    db.SaveChanges();
    return RedirectToAction("Index");
    }

    return View(DevisViewModel);
    }

    private void AddRevision(Devis devis, decimal Montant)
    {
    var revision = new Revision { Id = devis.Id, NumRevision = 1, DateRevision = devis.DateDevis, Montant = Montant };
    db.Revisions.Attach(revision);
    devis.Revision.Add(revision);
    }

    Il semblerait que ça marche.

    Petite question, pourquoi le "?" dans une déclaration de variable
    public int? CommandeId{ get; set; }

    Merci

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Néanmoins c'est lorsque que je créé un nouveau devis que je souhaite par défaut créer une révision.
    C'est bel et bien ce qui est réalisé


    DevisViewModel
    Attention aux termes !


    Il semblerait que ça marche.

    Je n'en doute pas, mais est-ce maintenable ? Testable ? Si demain ta logique métier change, les modifications ne risquent-elles pas d'être difficile et sources de bugs ?

    Et si demain, c'est plus SQL server derrière, mais un fichier XML, ou que sais-je encore ; pourquoi serait-ce dans cette partie de ta solution qu'il faudra mettre les mains ?

    Et si demain, c'est plus du web ? Tu dois tout recoder ?


    Ça fait certes beaucoup de "si", mais je suis près à parier que tu en rencontreras au moins un d'entre eux.


    Petite question, pourquoi le "?" dans une déclaration de variable
    Je pense que tu as vu ça dans le projet DAL. C'est Entity Framework qui a généré ces classes à partir de la base de données.

    Un '?' derrière un type signifie en C# que la variable est "Nullable". Ainsi,

    fonctionnera.



    N.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Oups, je te présente donc toutes mes excuses.

    J'ai encore beaucoup à apprendre et serai prêt à payer chez (enfin presque) pour avoir quelqu'un qui m'aide à coder mon projet.
    Il y a tellement de méthodes en fouillant sur le web qu'on s'y perd (le syndrome de la page blanche).

    Pourquoi attention au nom (DevisViewModel)?
    Merci pour le "?".
    J'étais bon en VB6, je vieilli.

    PS; pourquoi j'arrive pas à ouvrir ton projet, c'est bien visual studio?)

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut,

    En quoi consiste ton projet, si tu peux en parler ?

    ViewModel se réfère au pattern MVVM, or là on parle de MVC. Le "bon" nom aurait été DevisModel.

    Concernant ton soucis d'ouverture, je ne sais pas vraiment, qu'as-tu comme message d'erreur ? Le SLN est une solution VS2010. Il te faut MVC et ADO.NET Entity Framework.


    A bientôt,

    N.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Hello,

    Effectivement j'ai réussi à ouvrir ton projet avec VS2010 (avant j'essayais avec VS2012!!)
    Concernant mon projet, j'ai pris comme modèle ma boite avec le lot de lourdeur et de gestion de document et fichiers excel.
    J'essaie donc à titre perso de développer un site Web permettant de gérer les heures et aussi (d'où l'objet de ma question d'hier) de pour gérer les devis avec ses révisions, puis les commandes avec les échéancier de paimement. Comme ça je pourrai me faire une page d'accueil m'indiquant mon niveau de facturation ainsi que les factures à prévoir pour la semaine (mois!!).
    J'ai déjà pondu toute la structure de la base de données et me lance en MVC (un peu à l'aveugle je l'avoue). Mais je sais ce que je veux obtenir (c'est déjà un début. Il est donc vrai que pour le moment je ne soucie pas des différentes couches (métier, data,...) et essaie de produire des pages qui fonctionnent.
    J'avoue que google est mon ami...

    Si tu veux m'aider....

    En tout cas déjà merci pour les réponses.

Discussions similaires

  1. [PRO*C] Problème avec CREATE TABLE et nom de table dynamique
    Par laurent_56 dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 24/11/2011, 18h06
  2. Problème avec create table access en asp
    Par raymon dans le forum ASP
    Réponses: 2
    Dernier message: 03/11/2009, 18h27
  3. Problème avec le controle "create user wizard"
    Par iTanger dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/05/2007, 10h22
  4. Problème avec MetafileCanvas.create
    Par patrice rabiller dans le forum Delphi
    Réponses: 2
    Dernier message: 02/11/2006, 01h52
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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