Добавление нумерации страниц с использованием PagedList.MVC - PullRequest
0 голосов
/ 20 марта 2019

У меня есть представление Index Razor (MVC5 C #), которое просто отображает список данных из таблицы с именем ICS_Supplies.Это хорошо, за исключением того, что имеется много строк данных, и, следовательно, заполнение представления может занять много времени.Таким образом, необходима нумерация страниц.Я пришел из старых форм asp.net с VB.net, где нумерация страниц довольно проста.MVC5 и C # все еще довольно новы.,и у меня проблемы с его работой.

Вот где я нахожусь.Моя модель:

namespace ICS20web.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
using PagedList;


public partial class ICS_Supplies
{
    [Key]
    public int Supplies_ID { get; set; }

    [StringLength(25)]
    public string Old_ItemID { get; set; }

    [StringLength(80)]
    public string ItemDescription { get; set; }

    public int? OnHand { get; set; }

    public int? ReorderLevel { get; set; }

    public int? ReorderAmt { get; set; }

    [StringLength(10)]
    public string UnitMeasure { get; set; }

    [StringLength(30)]
    public string SupplyLocation { get; set; }

    [StringLength(1)]
    public string InvType { get; set; }

    [StringLength(1)]
    public string Discontinued { get; set; }
}
}

Вот мой контроллер для индекса

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using ICS20web.Models;
using PagedList;

namespace ICS20web.Controllers
{
public class SuppliesController : Controller
{
    private ICS_Internal_Transactions db = new ICS_Internal_Transactions();

    // GET: Supplies
    public ActionResult Index()
    {

        var supplies = db.ICS_Supplies.OrderByDescending(g =>     g.Supplies_ID).ToList();
        var model = new PagedList<ICS_Supplies>(supplies, 1, 10);

        return View(model);


    }

А вот мой код просмотра

@model PagedList.IPagedList<ICS20web.Models.ICS_Supplies>
@using PagedList.Mvc;


@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Old_ItemID)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ItemDescription)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.OnHand)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ReorderLevel)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ReorderAmt)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.UnitMeasure)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.SupplyLocation)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.InvType)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Discontinued)
    </th>
    <th></th>
  </tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Old_ItemID)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ItemDescription)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.OnHand)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ReorderLevel)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ReorderAmt)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.UnitMeasure)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.SupplyLocation)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.InvType)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Discontinued)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.Supplies_ID }) |
        @Html.ActionLink("Details", "Details", new { id=item.Supplies_ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.Supplies_ID })
    </td>
</tr>
}

</table>

@Html.PagedListPager(Model, page => Url.Action("Index", new { page, pagesize = 5 }))

Я установил PagedList.MVC Nuget идобавил соответствующие ссылки в мой файл View Web.Config, как указано в инструкции.

В настоящее время я получаю следующую ошибку при попытке загрузки страницы:

Сообщение об ошибке компилятора: CS1061: «IPagedList» не содержит определения для «Old_ItemID» и не имеет метода расширения «Old_ItemID»'можно найти принятие первого аргумента типа' IPagedList '(вам не хватает директивы using или ссылки на сборку?)

Первое, что я сделал, это удалил объект' Old_ItemID 'из представления, но затемта же ошибка генерируется со следующим объектом.

Я пытаюсь исправить ошибку.Похоже, это говорит мне о том, что в IPagedLIST нет определения для Old_ItemID, однако, когда я смотрю на модель ICS_Supplies, определение есть.Я неправильно настроил контроллер?Я заблудился относительно того, где искать дальше.

...