Im Verwenden des Standardprojekts Webanwendung mvc 5 template mit asp.net identity. Ich habe ein Movie.cs-Modell und verknüpfte jeden Benutzer mit einer Filmliste. Wenn Sie sich registrieren, können Sie also Filme in der Liste mit CRUD hinzufügen und sie auf der Startseite anzeigen.So zeigen Sie eine Nachricht an, wenn der Benutzer keine Listenelemente erstellt hat
meine Viewmodel:
@model MovieApp.ViewModels.UserMovieViewModel
@using MovieApp.Models;
<div class="row" style="margin-top:60px">
@using (ApplicationDbContext db = new ApplicationDbContext())
{
if (db.Users.Any())
{
foreach (var _user in Model.ApplicationUser)
{
<div class="col-md-4">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">@_user.UserName</h3>
</div>
<div class="panel-body">
<ul>
@foreach (var _movie in _user.Movies.Where(x => x.ApplicationUserID == _user.Id))
{
<li>@_movie.MovieName</li>
}
</ul>
</div>
</div>
</div>
}
}
else
{
<h2 class="alert alert-danger text-center">No movie lists</h2>
}
}
</div>
Wenn ich einen Benutzer haben, die alle Filme in der Liste hinzugefügt, dann habe ich für diese Linie null Ausnahmefehler bekam:
@foreach (var _movie in _user.Movies.Where(x => x.ApplicationUserID == _user.Id))
so, wie Nachricht (wie in der Abbildung unten) in der Liste unter jedem Benutzer anzuzeigen, wenn der Benutzer keine Filme erstellt hat?
Stellen Sie sicher, dass Sie in Ihrem ApplicationUser-Modell die zugrunde liegende Variable für die Eigenschaft "Movies" in eine neue Liste initialisieren(); um sicherzustellen, dass es nie null ist. –
Kevin
Tun Sie einfach, was Kevin sagte, so wird es auf einem leeren Enumerable operieren und dann: 'if (! _user.Movies.Any())' mit Ihrer Nachricht. –
@Kevin In meinem Appuser-Modell habe ich eine Eigenschaft für Filme wie folgt: öffentliche Liste Filme {get; einstellen; }, also weiß ich nicht, ob ich das richtig mache, aber wenn ich es in die öffentliche Liste ändere Movies = new List (); dann bekomme ich aus meiner Sicht keine Liste. –
john