C# 如果用户没有';我没有创建列表项
Im使用默认的web应用程序mvc 5模板项目和asp.net标识。 我有一个Movie.cs模型,并将每个用户关联到一个电影列表,因此当您注册时,您可以使用CRUD在列表中添加电影,我会在主页上显示它们 我的viewmodel:C# 如果用户没有';我没有创建列表项,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,Im使用默认的web应用程序mvc 5模板项目和asp.net标识。 我有一个Movie.cs模型,并将每个用户关联到一个电影列表,因此当您注册时,您可以使用CRUD在列表中添加电影,我会在主页上显示它们 我的viewmodel: @model MovieApp.ViewModels.UserMovieViewModel @using MovieApp.Models; <div class="row" style="margin-top:60px"> @using (Ap
@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>
那么,如果用户没有创建任何电影,如何在每个用户下的列表中显示消息(如下图所示)
只需在视图中添加一个条件
if (_user.Movies.Any())
{
your foreach
}
else
{
your message
}
只需在视图中添加一个条件
if (_user.Movies.Any())
{
your foreach
}
else
{
your message
}
您可以通过检查
内是否有任何电影来轻松实现这一点。面板主体
如下所示:
<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>
@if(_user.Movies!=null&&u user.Movies.Any()){
@foreach(var\u movie在_user.Movies.Where(x=>x.applicationserid==\u user.Id)中)
{
- @_电影名称
}
}
其他的
{
没有电影
}
您可以通过检查内部是否有电影来轻松实现这一点。面板主体
如下所示:
<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>
@if(_user.Movies!=null&&u user.Movies.Any()){
@foreach(var\u movie在_user.Movies.Where(x=>x.applicationserid==\u user.Id)中)
{
- @_电影名称
}
}
其他的
{
没有电影
}
为Movies属性使用备份变量,并将其初始化为空列表:
IList<Movie> _movies = new List<Movie>();
IList\u movies=new List();
然后,您的属性定义变为:
IList<Movie> Movies
{
get
{
return _movies;
}
set
{
_movies = value;
}
}
IList电影
{
得到
{
回归电影;
}
设置
{
_电影=价值;
}
}
这将确保如果用户尚未添加任何电影,则movies属性将返回一个空的电影列表,而不是null。为movies属性使用一个备份变量,并将其初始化为空列表:
IList<Movie> _movies = new List<Movie>();
IList\u movies=new List();
然后,您的属性定义变为:
IList<Movie> Movies
{
get
{
return _movies;
}
set
{
_movies = value;
}
}
IList电影
{
得到
{
回归电影;
}
设置
{
_电影=价值;
}
}
这将确保如果用户尚未添加任何电影,movies属性将返回一个空的电影列表,而不是null。确保在ApplicationUser模型中,您正在将movies属性的基础变量初始化为new list();为了确保它永远不为空。只需按照Kevin所说的做,它将在一个空的枚举表上运行,然后对您的消息执行:
如果(!\u user.Movies.Any())
。@Kevin在我的appuser模型中,我有这样一个电影属性:public List Movies{get;set;},所以我不知道我是否做对了,但当我把它改为public List Movies=new List();然后,我的视图中没有任何列表。请确保在ApplicationUser模型中,您正在将Movies属性的基础变量初始化为new list();为了确保它永远不为空。只需按照Kevin所说的做,它将在一个空的枚举表上运行,然后对您的消息执行:如果(!\u user.Movies.Any())
。@Kevin在我的appuser模型中,我有这样一个电影属性:public List Movies{get;set;},所以我不知道我是否做对了,但当我把它改为public List Movies=new List();然后我的视图中没有任何列表。这将循环所有电影,然后检查计数是否大于0。使用Any
Any
返回布尔而不是int,不需要>0
。我想编辑它,但由于限制,我不能。这是一个蹩脚的错误。不过,这将在所有电影中循环,然后检查计数是否大于0。使用Any
Any
返回布尔而不是int,不需要>0
。我想编辑它,但由于限制我不能。这是一个蹩脚的错误,你不需要任何
检查是否为真。电影将是一个空的可枚举文件,因此它不会呈现任何内容。只需要一次检查是否为非真,并显示消息。嗯,是的。如果(!\u user.Movies.Any()){No Movies…},您可以反转语句并执行)@mwilczynski我试过了,但是如果(_user.Movies.Any())@john,我仍然得到这一行的null异常,这意味着_user.Movies也可以为null。我已更新我的答案以检查\u user.Movies!=null
。您不需要任何检查是否为true。电影将是一个空的可枚举文件,因此它不会呈现任何内容。只需要一次检查是否为非真,并显示消息。嗯,是的。如果(!\u user.Movies.Any()){No Movies…}
,您可以反转语句并执行)@mwilczynski我试过了,但是如果(_user.Movies.Any())@john,我仍然得到这一行的null异常,这意味着_user.Movies也可以为null。我已更新我的答案以检查\u user.Movies!=空
。