PagedList MVC ne contient pas une définition pour PagedListPager
Je ne sais pas pourquoi la propriété pagecount,PageNumber et PageListPager ne contient pas une définition ou n'a pas pu être trouvé. Elle demande si je suis absent une directive using ou une référence d'assembly, mais je l'ai dans mon contrôleur utilisateur.
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
to
@Html.PagedListPager( Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter }) )
Remarque: les IMAGES ET le CODE ci-DESSOUS SONT SEULEMENT POUR la RÉFÉRENCE
Contrôleurs\UserController.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using RecreationalServicesTicketingSystem.Models;
using RecreationalServicesTicketingSystem.DAL;
using PagedList;
namespace RecreationalServicesTicketingSystem.Controllers
{
public class UserController : Controller
{
private IssueContext db = new IssueContext();
//
//GET: /User/
public ViewResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
var users = from s in db.Users
select s;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(s => s.LastName.ToUpper().Contains(searchString.ToUpper())
|| s.FirstMidName.ToUpper().Contains(searchString.ToUpper()));
}
switch (sortOrder)
{
case "name_desc":
users = users.OrderByDescending(s => s.LastName);
break;
case "Date":
users = users.OrderBy(s => s.EnrollmentDate);
break;
case "date_desc":
users = users.OrderByDescending(s => s.EnrollmentDate);
break;
default: //Name ascending
users = users.OrderBy(s => s.LastName);
break;
}
int pageSize = 3;
int pageNumber = (page ?? 1);
return View(users.ToPagedList(pageNumber, pageSize));
}
Vues\Utilisateur\Index.cshtml
@model IEnumerable<RecreationalServicesTicketingSystem.Models.User>
@{
ViewBag.Title = "Users";
}
<h2>Users</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm("Index", "User", FormMethod.Get))
{
<p>
Find by name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
<input type="submit" value="Search" />
</p>
}
<table>
<tr>
<th>
@Html.ActionLink("Last Name", "Index", new { sortOrder=ViewBag.NameSortParm, currentFilter=ViewBag.CurrentFilter })
</th>
<th>First Name
</th>
<th>
@Html.ActionLink("Enrollment Date", "Index", new { sortOrder = ViewBag.DateSortParm })
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstMidName)
</td>
<td>
@Html.DisplayFor(modelItem => item.EnrollmentDate)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.UserID }) |
@Html.ActionLink("Details", "Details", new { id=item.UserID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.UserID })
</td>
</tr>
}
</table>
<br />
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
to
@Html.PagedListPager( Model, page => Url.Action("Index", new { page, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter }) )
Avez-vous inclus les
J'ai essayé ce que vous avez suggéré et j'ai eu cette erreur. Compilateur Message d'Erreur: CS0246: le type ou Le nom d'espace de noms 'IPagedList' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?) Ligne 32: Ligne 33: Ligne 34: public class _Page_Views_User_Index_cshtml : Système.Web.Mvc.WebViewPage<IPagedList<RecreationalServicesTicketingSystem.Modèles.Utilisateur>> { Ligne 35: Ligne 36: #line caché
Vous ne pouvez pas il suffit de changer la question d'origine (et j'ai roulé de dessus vos modifications). Vous avez besoin de
Compilateur Message d'Erreur: CS0246: le type ou Le nom d'espace de noms 'IPagedList' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?).Ligne 40: public class _Page_Views_User_Index_cshtml : Système.Web.Mvc.WebViewPage<IPagedList<RecreationalServicesTicketingSystem.Modèles.Utilisateur>> {
Oui, il fonctionne ! Merci! Je pensais que Visual Studio met à l'aide d'instructions par défaut quand j'ai installer les paquets pour cette solution.
using
déclarations à votre avis? Et vous modèle doit être @model IPagedList<RecreationalServicesTicketingSystem.Models.User>
(pas IEnumerable<T>
)J'ai essayé ce que vous avez suggéré et j'ai eu cette erreur. Compilateur Message d'Erreur: CS0246: le type ou Le nom d'espace de noms 'IPagedList' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?) Ligne 32: Ligne 33: Ligne 34: public class _Page_Views_User_Index_cshtml : Système.Web.Mvc.WebViewPage<IPagedList<RecreationalServicesTicketingSystem.Modèles.Utilisateur>> { Ligne 35: Ligne 36: #line caché
Vous ne pouvez pas il suffit de changer la question d'origine (et j'ai roulé de dessus vos modifications). Vous avez besoin de
@using PagedList;
et @using PagedList.Mvc;
Compilateur Message d'Erreur: CS0246: le type ou Le nom d'espace de noms 'IPagedList' n'a pas pu être trouvée (vous manque une directive using ou une référence d'assembly?).Ligne 40: public class _Page_Views_User_Index_cshtml : Système.Web.Mvc.WebViewPage<IPagedList<RecreationalServicesTicketingSystem.Modèles.Utilisateur>> {
Oui, il fonctionne ! Merci! Je pensais que Visual Studio met à l'aide d'instructions par défaut quand j'ai installer les paquets pour cette solution.
OriginalL'auteur TykiMikk | 2016-02-23
Vous devez vous connecter pour publier un commentaire.
PageCount
,PageNumber
etc, sont des propriétés deIPagedList<T>
, pasIEnumerable<T>
. Vous avez besoin de changer le modèle dans la vue à utiliserIPagedList<T>
, et inclure les informations pertinentes à l'aide des déclarations.IEnumerable<T> c'est la classe de base dans la .NET framework pour l'énumération des collections. Il ne contient pas toutes les propriétés. IPagedList<T> est une interface dans le
PagedList.Mvc
assemblée qui s'étendIEnumerable<T>
d'ajouter des propriétés supplémentaires pourPageCount
etc.IPagedList<T>
estIEnumerable<T>
maisIEnumerable<T>
n'est pasIPagedList<T>
Ce qui donne avec la suppression de l'accepter/vote? Êtes-vous toujours des problèmes?
J'ai eu plusieurs écrans sur la même page, donc je l'ai enlevé et il a recommencé à m'assurer que je upvoted. Merci pour l'explication!
OriginalL'auteur
Vous manque à l'aide de de PagedList et PagedList.Mvc , comme d'autres vous l'a dit.
Ce que je peux ajouter, mieux ajouter à l'aide d'espaces de noms dans le fichier Vues/Web.Config à la place. Cela vous permettra d'utiliser des espaces de noms PagedList et PagedList.Mvc dans tous les points de Vue, et de raccourcir votre code. Exemple:
Et plus besoin d'utiliser à l'aide de dans chacun de vue/cshtml
Cela est particulièrement important lorsque vous avez un gros projet, il permettra de réduire votre code.
OriginalL'auteur TPAKTOPA