我使用带有asp.net身份的默认Web应用程序mvc 5模板项目。 我有一个Movie.cs模型,并且每个用户都有一个电影列表,所以当你注册时,你可以使用CRUD在列表中添加电影,并在主页上显示它们。
我的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>
如果我的用户没有在列表中添加任何电影,那么此行的空格异常错误:
@foreach (var _movie in _user.Movies.Where(x => x.ApplicationUserID == _user.Id))
那么如果用户还没有制作任何电影,如何在每个用户的列表中显示信息(如下图所示)?
答案 0 :(得分:1)
您可以通过检查.panel-body
内是否有任何电影来轻松实现此目的:
<div class="panel-body">
@if(_user.Movies != null && _user.Movies.Any()) {
<ul>
@foreach (var _movie in _user.Movies.Where(x => x.ApplicationUserID == _user.Id))
{
<li>@_movie.MovieName</li>
}
</ul>
}
else
{
<p>No movies...</p>
}
</div>
答案 1 :(得分:1)
为Movies属性使用支持变量并将其初始化为空列表:
IList<Movie> _movies = new List<Movie>();
然后您的属性定义变为:
IList<Movie> Movies
{
get
{
return _movies;
}
set
{
_movies = value;
}
}
这将确保如果用户尚未添加任何电影,则Movies属性将返回一个空的电影列表而不是null。
答案 2 :(得分:0)
只需在视图中添加条件
if (_user.Movies.Any())
{
your foreach
}
else
{
your message
}