Bonjour,
En code first, j'ai une classe Film dans Models qui est la suivante :
Et voici la classe Realisateur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Film { public int Id { get; set; } public string Titre { get; set; } public int Annee { get; set; } public string Descriptif { get; set; } public string Appreciation { get; set; } public Realisateur Realisateur { get; set; } }
J'aimerais afficher toutes les information d'un film (avec son réalisateur) dans une vue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Realisateur { public int Id { get; set; } public string Nom { get; set; } public string Prenom { get; set; } }
Dans ma base de données, générée après avoir fait une migration, j'ai bien renseigné comme Realisateur_Id : 1 (Correspondant à Steven Spielberg) pour le film avec l'ID 1 : A.I..
Dans mon FilmController voici le code que j'ai pour Index :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public ActionResult Index() { //var model = dbCtx.Films.ToList(); //return View("Index", model); var films = from f in dbCtx.Films join r in dbCtx.Realisateurs on f.Realisateur.Id equals r.Id select f; return View("Index", films); }
Voici le code de ma vue Index de Film:
Code CSHTML : 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 @model IEnumerable<WebApplicationFilm2.Models.Film> @{ ViewBag.Title = "Film"; } <h2>Index</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table class="table"> <tr> <th> @Html.DisplayNameFor(model => model.Titre) </th> <th> @Html.DisplayNameFor(model => model.Annee) </th> <th> @Html.DisplayNameFor(model => model.Descriptif) </th> <th> @Html.DisplayNameFor(model => model.Appreciation) </th> <th> @Html.DisplayNameFor(model => model.Realisateur.Id) </th> <th> @Html.DisplayNameFor(model => model.Realisateur.Nom) </th> <th> @Html.DisplayNameFor(model => model.Realisateur.Prenom) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Titre) </td> <td> @Html.DisplayFor(modelItem => item.Annee) </td> <td> @Html.DisplayFor(modelItem => item.Descriptif) </td> <td> @Html.DisplayFor(modelItem => item.Appreciation) </td> <td> @Html.DisplayFor(modelItem => item.Realisateur.Id) </td> <td> @Html.DisplayFor(modelItem => item.Realisateur.Nom) </td> <td> @Html.DisplayFor(modelItem => item.Realisateur.Prenom) </td> <td> @Html.ActionLink("Edit", "Edit", new { id = item.Id }) | @Html.ActionLink("Details", "Details", new { id = item.Id }) | @Html.ActionLink("Delete", "Delete", new { id = item.Id }) </td> </tr> } </table>
Je ne parviens pas à faire afficher ni l'id, ni le nom, ni le prénom du réalisateur dans la vue. Ils restent vides car en déboguant, je m'aperçois que dans le résultat du select il y a null pour le réalisateur alors que les autres champs sont bien remplis.
Quelqu'un pourrait-il m'aider à résoudre ce problème?
Merci d'avance.
Partager