1 pièce(s) jointe(s)
Problème d'affichage dans une vue des données d'une table avec clé étrangère
Bonjour,
En code first, j'ai une classe Film dans Models qui est la suivante :
Code:
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; }
} |
Et voici la classe Realisateur
Code:
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; }
} |
J'aimerais afficher toutes les information d'un film (avec son réalisateur) dans une vue.
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:
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:
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.
Pièce jointe 432730
Quelqu'un pourrait-il m'aider à résoudre ce problème?
Merci d'avance.