'&IEnumerable的LT;>'不包含''的定义并没有延伸方法''

时间:2016-03-17 12:06:19

标签: c# asp.net entity-framework viewmodel ienumerable

我试图列出所有用户,但我收到以下错误:

  

'&IEnumerable的LT;>'不包含' UsersVm'的定义没有扩展方法' UserVm'接受类型' IEnumerable'的第一个参数。可以找到

我的代码如下:

型号:

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; }
    }

查看(我在&{39; .UsersVm&#39;)收到错误

@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; }
    }

4 个答案:

答案 0 :(得分:2)

<ul>
    @foreach (var user in Model)
    {
        @foreach (var userVm in user.UsersVm)
        {
            <li>@userVm.Username</li>
        }
    }
</ul>

答案 1 :(得分:1)

不需要类UsersIndex,然后视图变为:

@model IEnumerable<MyBlog.Areas.Admin.ViewModels.UserEntity>

<h1>Admin Users</h1>

<ul>
    @foreach (var user in Model)
    {
        <li>@user.Username</li>
    }
</ul>

答案 2 :(得分:0)

您声明了一个类UsersIndex,但您似乎没有使用它。控制器需要实例化并将UsersIndex值传递给视图,并且视图@model需要接受UsersIndex而不是IEnumerable<UsersIndex>

答案 3 :(得分:0)

您的视图模型包含IEnumerable。视图中使用的模型是IEnumerable视图模型。所以基本上你有一个嵌套在一个集合中的集合。我假设你只想要一个集合?在这种情况下,您根本不需要视图模型,或者您应该将视图中使用的模型更改为@model MyBlog.Areas.Admin.ViewModels.UserEntity

如果嵌套在集合中的集合是故意的,那么我建议您将所有内容放在视图模型中,并且在视图中仍然有@model MyBlog.Areas.Admin.ViewModels.UserEntity