ASP.NET MVC Search and Paging

Đoạn code dưới đây hướng dẫn cách thiết lập chức năng Search & Paging (tìm kiếm và phân trang) trong asp.net mvc:

1. Install PageList

  • Click chuột phải trên Project và chọn Manage NuGet Packages…
  • Gõ tìm PagedList.mvc
  • Click chọn và Install để cài đặt thư viện vào project

3. Controller

public ActionResult Index(string searchString, int? page)
{
int recordsPerPage = 5;

if (!page.HasValue)
{
page = 1; // set initial page value
}
ViewBag.Keyword = searchString;

var products = db.Products.ToList();
try
{
if (!String.IsNullOrEmpty(searchString))
{
products = products.Where(s => s.ProductName.Contains(searchString)).ToList();
}
}
catch (Exception ex) { }
products.OrderByDescending(v => v.ProductId);

var finalList = products.ToPagedList(page.Value, recordsPerPage);
return View(finalList);
}

3. View

Sửa View index để mã như sau, chép từ đầu và ghi đè thay thế code trong view từ đầu đến ngay trước <table class=”table”>

@using PagedList;
@using PagedList.Mvc;
@model IPagedList<DataAccessDemoApp.Models.Product>
@{
ViewBag.Title = “Index”;
}
<h2>Index</h2>
<p>
@Html.ActionLink(“Create New”, “Create”)
</p>
@using (Html.BeginForm(“Index”, “Products”, FormMethod.Get))
{
<p>
Find by name: <input type=”text” name=”searchString” value=”@ViewBag.Keyword” />
<input type=”submit” value=”Search” />
</p>
}
<table class=”table”>

Chèn thêm đoạn sau vào cuối view Index.cshtml

@Html.PagedListPager(Model, page => Url.Action(“Index”, new
{
page,
searchString = ViewBag.Keyword
}),
PagedListRenderOptions.PageNumbersOnly)

Nhấn F5 để chạy thử và kiểm tra kết quả.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s