我正在尝试列出我的所有用户,但出现以下错误:
"IEnumerable<>"不包含"UsersVm"的定义,并且找不到接受类型为"IEnumerable"的第一个参数的扩展方法"UserVm"
我的代码如下:
型:
public class UserEntity
{
public virtual int Id { get; set; }
public virtual string Username { get; set; }
public virtual string Email { get; set; }
public virtual string PasswordHash { get; set; }
}
视图模型:
public class UsersIndex
{
public IEnumerable<UserEntity> UsersVm { get; set; }
}
查看(我在" .UsersVm
'处收到错误)
@model IEnumerable<MyBlog.Areas.Admin.ViewModels.UsersIndex>
<h1>Admin Users</h1>
<ul>
@foreach (var user in Model.UsersVm)
{
<li>@user.Username</li>
}
</ul>
控制器:
public class UsersController : Controller
{
MyBlogEntities db = new MyBlogEntities();
// GET: Admin/Users
public ActionResult Index()
{
var users = db.Users.ToList();
return View(users);
}
}
MyBlogEntities (DbContext)
public class MyBlogEntities : DbContext
{
public DbSet<UserEntity> Users { get; set; }
}
<ul>
@foreach (var user in Model)
{
@foreach (var userVm in user.UsersVm)
{
<li>@userVm.Username</li>
}
}
</ul>
类用户索引,然后视图变为:
@model IEnumerable<MyBlog.Areas.Admin.ViewModels.UserEntity>
<h1>Admin Users</h1>
<ul>
@foreach (var user in Model)
{
<li>@user.Username</li>
}
</ul>
你声明了一个类UsersIndex
但你似乎没有使用它。控制器需要实例化并将UsersIndex
值传递给视图,并且视图的@model
需要接受UsersIndex
而不是IEnumerable<UsersIndex>
您的视图模型包含一个 IEnumerable。视图中使用的模型是 IEnumerable 视图模型。因此,从本质上讲,集合嵌套在集合中。我假设你只想要一个集合?在这种情况下,您要么根本不需要视图模型,要么应将视图中使用的模型更改为 @model MyBlog.Areas.Admin.ViewModels.UserEntity
。
如果嵌套在集合中的集合是故意的,那么我建议您将所有内容都放在视图模型中,并且视图中仍然有@model MyBlog.Areas.Admin.ViewModels.UserEntity
。