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 :

créer un champ calculé


Sujet :

ASP.NET MVC

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut créer un champ calculé
    Bonjour,

    Ayant défini une liste d'articles avec chaque fois un prix, je voudrais que dans ma commande, après avoir choisi la quantité, le prix soit la multiplication de la quantité de ma commande et du prix de mon article.

    J'ai donc une classe "Commande" qui a une Foreign Key avec ma classe "Article"

    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
     
     public class Commande
        {
            public int CommandeID { get; set; }
     
            public int ArticleID { get; set; }
     
            public int CommandeQuantite { get; set; }
     
            public int CommandePrixTotal { get; set; }
     
            public virtual Article Article { get; set; }
        }
     
    public class Article
        {
            public int ArticleID { get; set; }
     
            public string ArticleNom { get; set; }
     
            public int ArticlePrix{ get; set; }
     
        }
    Je crée alors un CommandesController en utilisant l'automatisme de VS express 2013.

    Si je lance l'application, dans ma vue "Commande" j'ai bien un dropbox qui me permet de choisir l'article. En fonction de l'article sélectionné dans mon dropbox, j'aimerais que s'affiche le prix de l'article (qui n'est pas repris en tant que tel dans ma commande). Et je voudrais aussi qu'au moment créer ma commande il multiplie la quantité commandée par le prix de l'article.

    au niveau de mon controlleur, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      public ActionResult Create([Bind(Include="CommandeID,ArticleID,CommandeQuantite,CommandePrixTotal")] Commande commande)
            {
    //ligne suivante rajoutée
                commande.CommandePrixTotal = CommandeQuantite * commande.Article.ArticlePrix;
     
                if (ModelState.IsValid)
                {
                    db.Commandes.Add(commande);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }...
    Dans le code ci-dessus, dans ma ligne rajoutée, ça ne fonctionne pas car dans "commande.Article.ArticlePrix;", Article vaut null ???

  2. #2
    Membre chevronné Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Par défaut
    Bonjour

    Il me semble que dans ton Create tu reçois l'ArticleId. A ce moment là la propriété Article est nulle, c'est normal. Tu dois aller le chercher ton article...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public ActionResult Create([Bind(Include="CommandeID,ArticleID,CommandeQuantite,CommandePrixTotal")] Commande commande)
            {
                if (ModelState.IsValid)
                {
                    commande.Article = [méthode pour chercher un article à partir de ArticleId]
                    commande.CommandePrixTotal = CommandeQuantite * commande.Article.ArticlePrix;
                    db.Commandes.Add(commande);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }...
    Après tu peux aussi faire de ta propriété CommandePrixTotal un simple get
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public int CommandePrixTotal
    {
      get
      {
        if(this.Article == null)
          this.Article = [méthode pour chercher un article à partir de ArticleId]
        if(this.Article != null)
          return this.Article.ArticlePrix * this.CommandeQuantite;
        else
          return 0;
      }
    }

Discussions similaires

  1. [SP-2007] Créer une fonction utilisable dans les champs calculés
    Par lolomoss dans le forum SharePoint
    Réponses: 4
    Dernier message: 25/06/2009, 08h49
  2. Créer un champs calculé par programme
    Par BYALI dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/08/2008, 09h39
  3. créer un champ calculé avec condition
    Par coollehavre2 dans le forum Développement
    Réponses: 2
    Dernier message: 07/08/2008, 13h26
  4. Réponses: 1
    Dernier message: 13/05/2008, 15h33
  5. Créer un champ calculé dans une table
    Par tigevellou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/04/2006, 15h08

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