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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

+ 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