我将解释在asp.net mvc中实现分页的方式。
产品控制器.cs
private ProductContext db = new ProductContext ();
public ActionResult Index()
{
string pageString = "";
try
{
pageString = Request.Url.Segments[3];
}
catch (Exception)
{
pageString = null;
}
int page = (String.IsNullOrEmpty(pageString)) ? 1 : Int32.Parse(pageString);
Product userModel = new Product();
int totalProducts = userModel.GetTotalProducts();
PaginationFunction pagination = new PaginationFunction(true);
pagination.BaseUrl = "/Product/Index/";
pagination.TotalRows = totalProducts;
pagination.CurPage = page;
pagination.PerPage = 5;
pagination.PrevLink = "Prev";
pagination.NextLink = "Next";
string pageLinks = pagination.GetPageLinks();
int start = (page - 1) * pagination.PerPage;
int offset = pagination.PerPage;
List<Product> products = userModel.GetProducts(start, offset);
ViewData["title"] = "Pagination in Asp.Net Mvc";
ViewData["totalProducts"] = totalProducts;
ViewData["products"] = products;
ViewData["pageLinks"] = pageLinks;
return View(db.Products.ToList());
}
产品模型.cs
public class Product
{
private ProductContext db = new ProductContext ();
public int GetTotalProducts()
{
return db.Products.Count();
}
public List<Product> GetProducts()
{
return db.Products.ToList();
}
public List<Product> GetProducts(int start, int offset)
{
IEnumerable<Product> query = from m in db.Products
orderby m.Id descending
select m;
query = query.Skip(start).Take(offset);
return query.ToList();
}
}
索引.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<h2>View Users</h2>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
<p>Total Users: <strong><%= ViewData["totalProducts"] %></strong></p>
<% if ((int)ViewData["totalProducts"] == 0)
{ %>
<p>Sorry! No Users Found.</p>
<% }
else
{ %>
<table border="0" cellspacing="0" cellpadding="0" width="100%" class="list">
<tr>
<th>Name</th>
<th>Price</th>
<th>CreatedDate</th>
<th>UpdatedDate</th>
<th></th>
</tr>
<% foreach (Product u in (List<Product>)ViewData["products"])
{ %>
<tr>
<td><%= u.Name%></td>
<td><%= u.Price %></td>
<td><%= u.CreatedDate %></td>
<td><%= u.UpdatedDate%></td>
<td>
<%: Html.ActionLink("Edit", "Edit", new { id=u.Id }) %> |
<%: Html.ActionLink("Details", "Details", new { id=u.Id }) %> |
<%: Html.ActionLink("Delete", "Delete", new { id=u.Id }) %>
</td>
</tr>
<% } %>
</table>
<br />
<% if ((string)ViewData["pageLinks"] != "")
{ %>
<%= ViewData["pageLinks"] %>
<br /><br />
<% } %>
<% } %>
</asp:Content>