2009-08-10 84 views
2

我有一个asp.net网站,我做的代码翻阅使用背后:寻呼在asp.net mvc的

PagedDataSource objPds = new PagedDataSource 
           { 
            DataSource = ds.Tables[0].DefaultView, 
            AllowPaging = true, 
            PageSize = 12 
           }; 

是什么做传呼的asp.net-MVC相当于最佳途径。我会认为这实际上属于视图代码。

回答

11

我只想定义与页码自定义路线是:

routes.MapRoute(
       "Books", // Route name 
       "books/{page}", // URL with parameters 
       new {controller = "Books", action = "List", page = 1} 
       ); 

会给你这个网址类型:

http://localhost/books/4/ 

然后在您的控制器动作,您得到这个页码:

public BooksController 
{ 
    public ActionResult List (int page) 
    { 
     /* Retrieve records for the requested page from the database */ 

     return View(); 
    } 
} 

所以你的观点实际上不会知道当前页面的。它将只显示提供的记录列表。

你也将需要直接或可能产生在你的主网页链接到各个页面无论是在这一观点。

5

有一个在Nerd Dinner项目良好的分页类的例子:

public class PaginatedList<T> : List<T> { 

     public int PageIndex { get; private set; } 
     public int PageSize { get; private set; } 
     public int TotalCount { get; private set; } 
     public int TotalPages { get; private set; } 

     public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) { 
      PageIndex = pageIndex; 
      PageSize = pageSize; 
      TotalCount = source.Count(); 
      TotalPages = (int) Math.Ceiling(TotalCount/(double)PageSize); 

      this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize)); 
     } 

     public bool HasPreviousPage { 
      get { 
       return (PageIndex > 0); 
      } 
     } 

     public bool HasNextPage { 
      get { 
       return (PageIndex+1 < TotalPages); 
      } 
     } 
0

如果你买:
专业ASP.NET MVC 1.0(Wrox的程序员到程序员)

在有关于本节Ajax和JsonResult ...非常好的演示如何设置一个JavaScript和非JavaScript解决方案。我没有真正实现它,所以我不记得太多,我只记得当我阅读它时,我认为它适用于在我的新网站上进行分页。

体面这里的教程,以及:
http://www.asp.net/learn/mvc/tutorial-32-cs.aspx

0

,我将解释以实现asp.net的MVC分页的方式。

ProductController.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()); 
} 

ProductModel.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(); 
     } 

    } 

的Index.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>