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 :

propriétés de navigation


Sujet :

ASP.NET MVC

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 106
    Par défaut propriétés de navigation
    Salut,

    comment je peux ajouter une propriété de navigation ( public virtual ICollection<Enrollment> Enrollments { get; set; } ) à une classe généré par Entity Framework, j'ai essayé en l'ajoutant dans myModel.Designer.cs mais ça n'a pas marché

    Merci

  2. #2
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Il faut utiliser soit le mode graphique (fichier .edmx) de ton modèle si la propriété de navigation est une classe (ici Enrollments ) persistante (présente dans l'edmx), soit créer une classe partiel de la classe parente ayant une propriété public virtual ICollection<Enrollment> Enrollments { get; set; } Par contre il faudra définir comment cette propriété est chargée.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 106
    Par défaut
    Merci pour ta réponse,
    Citation Envoyé par NicoL__ Voir le message
    Par contre il faudra définir comment cette propriété est chargée.
    j'ai essayé de le charger dans la vue Details.cshtml:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    @model ContosoUniversity.Models.Etudiant
    
    @{
        ViewBag.Title = "Details";
    }
    
    <h2>Details</h2>
    
    <fieldset>
        <legend>Etudiant</legend>
    
        <div class="display-label">Nom</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Nom)
        </div>
    
        <div class="display-label">Prenom</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.Prenom)
        </div>
    
        <div class="display-label">DateInscription</div>
        <div class="display-field">
            @Html.DisplayFor(model => model.DateInscription)
        </div>
    
        <div class="display-label">
        @Html.LabelFor(model => model.Inscriptions)
    </div>
    <div class="display-field">
        <table>
            <tr>
                <th>Grade</th>
            </tr>
            @foreach (var item in Model.Inscriptions)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.Grade)
                    </td>
                    
                </tr>
            }
        </table>
    </div>
    
    </fieldset>
    <p>
        @Html.ActionLink("Edit", "Edit", new { id=Model.IDetudiant }) |
        @Html.ActionLink("Back to List", "Index")
    </p>
    mais j'obtiens une erreur au niveau de la Ligne38:
    System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
    Ligne 36 : <th>Grade</th>
    Ligne 37 : </tr>
    Ligne 38 : @foreach (var item in Model.Inscriptions)
    Ligne 39 : {
    Ligne 40 : <tr>

  4. #4
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    C'est dans le contrôleur qu'il faut charger Model.Inscriptions. Dans la vue tu l'affiche en y accédant. Donc là on voit bien que cette propriété n'est pas chargé elle est à null.
    La propriété Inscriptions vient d'où ? De la base de données ? Si c'est la cas il faut modifier le modèle dans l'edmx. Si cela vient d'autre part, fichier, calcule, webservice... il faut instancier cette propriété en utilisant sa source.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 106
    Par défaut
    Bonjour,

    La propriété Inscriptions vient d'où ?
    vient d'une classe partial:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    namespace ContosoUniversity.Models
    {
        public partial class Etudiant
        {
            public virtual ICollection<Inscription> Inscriptions { get; set; }
        }
    les classes partial sont dans Models et les autres en base de donnée..

    C'est dans le contrôleur qu'il faut charger Model.Inscriptions.
    j'ai essayé de le charger en ajoutant Inscriptions = new List<Inscription> ();
    mais ça m'a affiché 3 erreurs..

  6. #6
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Si la list Inscription est vide au départ, Inscriptions = new List<Inscription> (); devrait permettre que cela fonctionne.
    L'erreur est toujours :
    System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 106
    Par défaut
    L'erreur est toujours :
    System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
    oui,
    Si la list Inscription est vide au départ, Inscriptions = new List<Inscription> (); devrait permettre que cela fonctionne.
    oui elle est vide mais il y'a 3 erreurs qui s'affichent au niveau de Inscriptions = new List<Inscription> ();
    *) Jeton '=' non valide dans la déclaration de membres de la classe, de la structure ou de l'interface

    *) Le type ou le nom d'espace de noms 'Incscriptions' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)

    *) Le modificateur de membre 'public' doit précéder le type et le nom du membre
    Controlleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    namespace ContosoUniversity.Controllers
    { 
        public class EtudiantController : Controller
        {
            private SupemirUniversityDBEntities db = new SupemirUniversityDBEntities();
            Inscriptions = new List<Inscription> ();
    ...

  8. #8
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    namespace ContosoUniversity.Controllers
    { 
        public class EtudiantController : Controller
        {
            private SupemirUniversityDBEntities db = new SupemirUniversityDBEntities();
            Inscriptions = new List<Inscription> ();
    Inscriptions ne semble pas déclaré !
    De toutes les façons Inscriptions ne doit pas être un propriété du contrôleur mais de l'instance de Etudiant utilisé pour modèle. Et Etudiant .Inscriptions doit être initialisé dans les action du contrôleur.

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

Discussions similaires

  1. propriétés de navigation dans GridView
    Par keryss dans le forum Entity Framework
    Réponses: 2
    Dernier message: 10/04/2011, 21h40
  2. Linq, Propriété de navigation et temps de réponse
    Par sephirostoy dans le forum Linq
    Réponses: 8
    Dernier message: 15/02/2011, 14h35
  3. Réponses: 5
    Dernier message: 08/10/2010, 15h34
  4. Propriété de navigation
    Par hech2007 dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 05/10/2010, 17h37
  5. [Linq to Sql] [C#] Propriété de navigation
    Par ClaudeBg dans le forum Accès aux données
    Réponses: 9
    Dernier message: 27/02/2009, 19h38

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