2

Visual Studio 2012 インターネット アプリケーション MVC4 C#

エラー

System.InvalidOperationException: ディクショナリに渡されたモデル項目の型は 'System.Data.Entity.Infrastructure.DbQuery 1, but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1です

My View Expects:@model IEnumerable<OG.Models.UserProfiles>これはViewModel ではなくデータモデルです。*このビューはUserProfiles、コントローラーを作成したときにモデルによって生成されたものでもあります ( Standart Scaffolding with@Html.DisplayNameFor(model => model.Company)および後で@foreach (var item in Model) {to list data`

私のコントローラーの試み:

  • 試行 1認識 (リストを返さない)

    return View(db.UserProfiles
                 .Include(c => c.Roles)
                 .Where(c => c.Roles.Any(up => up.RoleName != "Administrator"))
                 .Select(c => new
                 {
                     UserID = c.UserID,
                     UserName = c.UserName,
                     UserCount = c.Roles.Count()
                 }));
    
  • 試行 2認識 (リストを返さない)

            var model =
                from usr in db.UserProfiles
                join rls in db.UserRoles on usr.Roles equals rls.RoleId
    
                select new { UserID = usr.UserID, UserName = usr.UserName };
    
  • 試行 3認識 (リストを返さない)

            var model =
               from usr in db.UserProfiles.Include(t => t.Roles)
               where usr.Roles.Any(up => up.RoleName != "Administrator")
               select new WebAdminUsersLookup
               {
                   UserID = usr.UserID,
                   UserName = usr.UserName
               };
    
  • 試行 4これは「実際の」リストではないと思いますが、それでもエラーが発生します

    var listOfIdeas = 
         (from x in db.UserProfiles.Include(t => t.Roles)
         .Where(u => u.Roles.Any(up => up.RoleName != "Administrator"))
         select new { UserID = x.UserID, UserName = x.UserName }).ToList();
    
  • 試行 1 ~ 3 の場合

            List<UserProfiles> modelList = new List<UserProfiles>();
            modelList.Add(model.ToList());
    

そのようなものとそれらのためのビューモデルを作成しました

    private class WebAdminUsersLookup
    {
        //public List<UserProfiles> Users { get; set; }
        public int UserID { get; set; }
        public string UserName { get; set;}
    }

検索したウェブサイト:

4

2 に答える 2