Почему я получаю сообщение об ошибке при связывании модели моих проектов с IPagedList? - PullRequest
0 голосов
/ 30 ноября 2018

Следуя инструкциям на веб-сайте Microsoft (https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application),), я попадаю в раздел «Добавление ссылок на страницы в представление индекса ученика» и сталкиваюсь с проблемой. Я установил PagedList.Mvc и зависимость PagedList. Вкл.В моем представлении индекса я сталкиваюсь со следующей ошибкой: ошибка CS1061: «PagedList.IPagedList» не содержит определения «Model», и никакой метод расширения «Model», принимающий первый аргумент типа «PagedList.IPagedList», не можетможно найти Версии обоих пакетов:

PagedList - 1.17.0.0

PagedList.Mvc - 4.5.0.0

Это ссылки, вызываемые сверхуНа мой взгляд:

@using PagedList.Mvc;
@using PagedList;
@model PagedList.IPagedList<InventoryTracking.Models.Item>

Вот соответствующий код в моем контроллере:

var items = from s in db.Items select s;
...
int pageSize = 3;
int pageNumber = (page ?? 1);
return View(items.ToPagedList(pageNumber, pageSize));

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я нашел ответ, посмотрев по этой ссылке MVC IPagedList с ошибкой типа модели .На мой взгляд, проблема была в том, что я использовал @ Html.DisplayNameFor (Model), который работал, когда модель основывалась на элементе, прежде чем я перешел на IPagedList.Не помогло то, что у меня есть класс с именем «Модель», который еще больше запутал ситуацию при поиске ответа.

//Incorrect 
@Html.DisplayNameFor(model => model.Assigned_User)

//Correct
@Html.DisplayNameFor(model => model[0].Assigned_User)
0 голосов
/ 30 ноября 2018

убедитесь, что вы передаете PagedList из контроллера для просмотра

например:

List<Item> ItemList = db.Items.ToList();
return view(ItemList.ToPagedList(page, PageCount));

, где ваша страница является номером текущей страницы, а количество страниц - это общее количество элементов на одной странице

...