STEP1:
To enable paging in your mvc project,First you need to install PagedList.mvc
Go To Tools=>Select Nuget Package Manager=>then Select Package Manager Console.
See the Screenshot for reference.
You will get a nuget window down the view.
Write the command :
Install-Package PagedList.Mvc
Click Enter.
Refer screenshot given below.
STEP2: In the view page, we need to change @model declaration.
Recently used model declaration is:
@model Ienumerable<MvcPracticeWebApplication.Models.StudentInfoModel>
But change it in PagedList format which will look like this:
@model PagedList.IPagedList<MvcPracticeWebApplication.Models.StudentInfoModel>
STEP3: Now for the Controller,you have to add Optional page Number and PageSize Parameters to the Paged ActionResult.
Controller:
[AllowAnonymous]
public ActionResult StudentDetails(int? page)
{
int pageSize = 3;
int pageNumber = (page ?? 1);
var response = apiStudentController.GetStudentDetails();
if (response.GetType() == typeof(System.Web.Http.Results.OkNegotiatedContentResult<List<StudentInfoModel>>))
{
List<StudentInfoModel> model = new List<StudentInfoModel>();
System.Web.Http.Results.OkNegotiatedContentResult<List<StudentInfoModel>> value = (System.Web.Http.Results.OkNegotiatedContentResult<List<StudentInfoModel>>)response;
model = value.Content;
return View(model.ToPagedList(pageNumber, pageSize));
}
else
{
return View("Error");
}
}
STEP4:
@Html.PagedListPager()
Now use above mentioned html helper into your view.
Refer the below view code to include the Paging.
@model PagedList.IPagedList<MvcPracticeWebApplication.Models.StudentInfoModel>
@using PagedList.Mvc;
@{
ViewBag.Title = "StudentDetails";
}
<h2>StudentDetails</h2>
<div>
<table class="table">
<tr>
<th>
@Html.DisplayName("Firstname")
</th>
<th>
@Html.DisplayName("Lastname")
</th>
<th>
@Html.DisplayName("DOB")
</th>
<th>
@Html.DisplayName("EmailId")
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.DOB)
</td>
<td>
@Html.DisplayFor(modelItem => item.EmailId)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { Id = item.StudentId }) |
@Html.ActionLink("Details", "DisplayStudentDetails", new { Id = item.StudentId }) |
@Html.ActionLink("Delete", "Delete", new { id = item.StudentId }, new { onclick = "return confirm('Are you sure you want to delete this student?');" })
</td>
</tr>
}
</table>
<div class="pager">
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("StudentDetails",new { page }))
</div>
<p>
@Html.ActionLink("Create New", "Index", "Student")
</p>
</div>
Debug the application and see the result:Refer screenshot
0 Comment(s)