C# ASP.NET MVC-传递的模型项是泛型.List,但需要类型PagedList

C# ASP.NET MVC-传递的模型项是泛型.List,但需要类型PagedList,c#,asp.net-mvc,windows,C#,Asp.net Mvc,Windows,我对所有这些都不熟悉,在App.net 4.7.2 MVC应用程序中进行分页时遇到了问题。我得到以下错误: 传入字典的模型项的类型为“System.Collections.Generic.List1[AIAR.Models.PIAModel]”,但此字典需要“PagedList.IPagedList1[AIAR.Models.PIAModel]”类型的模型项 我想我理解这个问题,因为我在控制器中使用了一个通用列表,但我不知道如何解决它。我已经在谷歌搜索了一段时间了,就是想不出来。任何帮助都将不胜

我对所有这些都不熟悉,在App.net 4.7.2 MVC应用程序中进行分页时遇到了问题。我得到以下错误:

传入字典的模型项的类型为“System.Collections.Generic.List
1[AIAR.Models.PIAModel]”,但此字典需要“PagedList.IPagedList
1[AIAR.Models.PIAModel]”类型的模型项

我想我理解这个问题,因为我在控制器中使用了一个通用列表,但我不知道如何解决它。我已经在谷歌搜索了一段时间了,就是想不出来。任何帮助都将不胜感激。如果我还需要提供什么,请告诉我

控制器部分:

public ActionResult ViewPIAS(string searchBy, string search,int? page)
        {
            ViewBag.Message = "PIA List";

            var data = LoadPIAS();
            List<PIAModel> PIAS = new List<PIAModel>();

            foreach (var row in data)
            {
                PIAS.Add(new PIAModel
                {
                    Id = row.Id,
                    AssetName = row.AssetName,
                    AssetDescription = row.AssetDescription,
                    Unit = row.Unit,
                    InformationAssetCustodian = row.InformationAssetCustodian

                });

            }
            if (searchBy == "AssetName")
            {
                return View(PIAS.Where(x => x.AssetName.StartsWith(search)).ToPagedList(page ?? 1, 3).ToList());
            }
            else if(searchBy == "AssetDescription")
            {
                return View(PIAS.Where(x => x.AssetDescription.StartsWith(search)).ToPagedList(page ?? 1, 3).ToList());
            }
            else
                return View(PIAS);
        }

谢谢你

解决方案是在控制器和视图中使用IList界面,问候语

解决方案是在控制器和视图中使用IList界面,问候语

设法在前几天使其正常工作

 int recordsPerPage = 10;
            var list = PIAS.ToList().ToPagedList(page, recordsPerPage);

            if (searchBy == "AssetName")
            {
                var assetnamesearch = list.Where(x => x.AssetName.Contains(search));
                return View(assetnamesearch.ToList().ToPagedList(page, recordsPerPage));
            }
            else
                return View(list);
            }

谢谢所有的回复

前几天我设法让这一切顺利进行,伙计们

 int recordsPerPage = 10;
            var list = PIAS.ToList().ToPagedList(page, recordsPerPage);

            if (searchBy == "AssetName")
            {
                var assetnamesearch = list.Where(x => x.AssetName.Contains(search));
                return View(assetnamesearch.ToList().ToPagedList(page, recordsPerPage));
            }
            else
                return View(list);
            }

谢谢所有的回复

从.ToPagedList(…).ToList()中删除.ToList()调用?我认为如果执行else分支,就会发生这种情况,您应该返回View(PIAS.ToPagedList(,);并应删除其他分支的所有.toList()语句谢谢您的评论。我删除了.ToList()调用,并在else语句中添加了return视图(谢谢)。仍然遇到相同的问题。是否从.ToPagedList(…).ToList()中删除.ToList()调用?我认为如果执行了else分支,则会发生这种情况,您应该返回View(PIAS.ToPagedList(,);并应删除其他分支的所有.toList()语句谢谢您的评论。我删除了.ToList()调用,并在else语句中添加了return视图(谢谢)。仍然遇到同样的问题。
 int recordsPerPage = 10;
            var list = PIAS.ToList().ToPagedList(page, recordsPerPage);

            if (searchBy == "AssetName")
            {
                var assetnamesearch = list.Where(x => x.AssetName.Contains(search));
                return View(assetnamesearch.ToList().ToPagedList(page, recordsPerPage));
            }
            else
                return View(list);
            }