I want to implement pagination into my application.
My Controller
public ActionResult Leading(string type, int? pageNumber)
{
IEnumerable<LeadingClass> data;
LeadingDatabaseHandle DatabaseHandle = new LeadingDatabaseHandle ();
if (type.HasValue)
{
data = DatabaseHandle(type).ToPagedList(pageNumber ?? 1, 10);
}
else
{
data = DatabaseHandle.LeadingAll().ToPagedList(pageNumber ?? 1, 10);
}
LeadingFilterVM model = new LeadingFilterVM
{
Type = type,
TypeList = new List<SelectListItem>
{
new SelectListItem{ Text = "General", Value = "1" },
new SelectListItem{ Text = "Advance", Value = "2" }
},
Leadings = data
};
return View(model);
}
My `Data Model
public class LeadingClass
{
public int Id { get; set; }
public string Name{ get; set; }
public string Type { get; set; }
}
My View Model
public class LeadingFilterVM
{
public string Type { get; set; }
public IEnumerable<SelectListItem> TypeList { get; set; }
public IEnumerable<LeadingClass> Leadings { get; set; }
}
And my View
@model Website.Models.Leading.ViewModels.LeadingFilterVM
@using PagedList;
@using PagedList.Mvc;
@using (Html.BeginForm("Leading", "Home", FormMethod.Get))
{
@Html.DisplayNameFor(m => m.Leadings.FirstOrDefault().Type)
@Html.DropDownListFor(m => m.Type, Model.TypeList, "All Type", new { @class = "form-control"})
}
<table class="table table-hover">
<tr>
<th>@Html.DisplayNameFor(m => m.Leadings.FirstOrDefault().Id)</th>
<th>@Html.DisplayNameFor(m => m.Leadings.FirstOrDefault().Name)</th>
</tr>
@foreach (var item in Model.Leadings)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Id)</td>
<td>@Html.DisplayFor(modelItem => item.Name)</td>
</tr>
}
</table>
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, pageNumber => Url.Action("Leading", new
{
pageNumber
}))
It is throwing error: Compiler Error Message:
CS1061: 'LeadingFilterVM' does not contain a definition for 'PageNumber' and no extension method 'PageNumber' accepting a first argument of type 'LeadingFilterVM' could be found (are you missing a using directive or an assembly reference?)
Can anyone please guide me?
PageNumberproperty is not exist inLeadingFilterVMviewmodel class. Check if you're usingPageNumberproperly fromPagedListPager.LeadingFilterVMclass does not have aPageNumberproperty. Why are you using that property if you have not defined it ?